c语言实现文件内容某行删除
发布网友
发布时间:2022-05-06 17:12
我来回答
共5个回答
热心网友
时间:2022-07-01 13:19
整体思路如下:
首先,找到找到要删除的那一行的行号,假如是j行,然后把指向文件的指针定位到j+1行处(可以使用fseek函数,Linux下可以使用lseek函数);
读取一行(此时的文件指针已到达改行的末尾处,也可以认为是到了下一行的开始处),再把文件指针定位到j行,把刚才读出的再写会,使用循环直至文件结束。
简单的说就是把后面的每一行一行一行的读出,再一行一行的写到前面一行。
热心网友
时间:2022-07-01 13:19
fopen打开文件,读出内容,比较,符合要删除的内容,继续读,把不符合要删除内容的东西写入另一个文件。
热心网友
时间:2022-07-01 13:20
直接实现删除某行好像不可以
你可以这么做,
读出全部文件,
删除最后一行后,
再覆盖写到原来的文件中
热心网友
时间:2022-07-01 13:20
比较简单的问题,没人写,帮你弄了算了。由于小可机子没有装vc2005,所以程序是在win-tc和Dev-c++下运行通过的。
/* 本题的一个完整的c程序如下,程序在win-tc和Dev-c++下已调试通过。 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 255 /* 设文章不超过255行,可更改 */
int main()
{
int i=0,max;
char s[N][81],*p="A.txt";/*设文件A.txt每行文章不超过80字符,可更改*/
FILE *fp;
if ((fp=fopen("A.txt","r"))==NULL)
{ printf("Open file %s error! Strike any key to exit.",p);
system("pause");
exit(0);
}
while (i<N&&fgets(s[i],81,fp)!=NULL)/*按行读原文章*/
{
p=strchr(s[i],'\n');/*消除每行最后的回车符*/
if(p)
*p='\0';
i++;
}
max=i;/*max为文章实际的最大行数*/
fclose(fp);
fp=fopen("A.txt","w");
for(i=0;i<max-2;i++) /*写入文件并输出到屏幕显示除最后一行后的所有行*/
{ fprintf(fp,"%s\n",s[i]);
printf("%s\n",s[i]);
}
fprintf(fp,"%s",s[i]);
printf("%s\n",s[i]);
fclose(fp);
system("pause");
return 0;
}
我发的类似的问题很多的,你可以参阅:
http://zhidao.baidu.com/question/79123769.html
http://zhidao.baidu.com/question/80045856.html
http://zhidao.baidu.com/question/80034032.html
热心网友
时间:2022-07-01 13:21
直接删