C语言文件操作删除任意文件中的最后一行文本

通过C语言删除一个TXT文本中的最后一行
2025-04-14 12:16:24
推荐回答(2个)
回答(1):

需要用系统调用,程序在windows下顺利通过测试,用法


程序 文件名

#include 
#include 
#include 

typedef int bool;

bool setFileLength(FILE* file, unsigned int len)
{
#ifdef _WIN32
 int fd;
 HANDLE hfile;
 
 fseek(file, len, SEEK_SET);
 fd = _fileno(file);
 hfile = (HANDLE)_get_osfhandle(fd);
 return SetEndOfFile(hfile);
#else
 int fd = fileno(file);
 return ftruncate(fd, len) == 0;
#endif
}

int main(int argc,char *argv[])
{
char buf[5120];
long len[2]={0,0},i=0;
FILE *fp=NULL;

if(argc!=2)
{
printf("Usage:%s file name.\n",argv[0]);
exit(1);
}

fp = fopen(argv[1],"r+w");
if(!fp)
{
printf("cannot open %s\n",argv[1]);
exit(1);
}

while ( fgets(buf,5120,fp) != NULL) {
len[i % 2] = ftell(fp);
i++;
}
/*printf("len is %ld\n",len[i % 2]);*/
setFileLength(fp,len[i % 2]);
fclose(fp);

exit(0);
}

回答(2):

你好!
这个建议你,采用一个副本文件的方式来完成;
统计出一共有多少行,然后复制!