C语言文件操作

有一个文件,在任意的ab之间完成换行的操作,如何完成?
例如文件名是a.txt,内容为:
afadfadabkakjabafaeuabdferhv
afertfadabkertakjabafartyeu
如何操作使之成为
afadfada
bkakja
bafaeua
bdferhv
afertfada
bkertakja
bafartyeu
并替换原来的文件?
1楼:
读到缓存中,怎么读啊?难道直接用fp=fopen(e:\a.txt)就行了?那么fp指向什么地方呢?好像不是这个文件的首部啊?因为我试着输出printf('%d',*fp)的时候,即使fp在一直增加,也输出为零,有时还出现内存泄漏的问题。
2楼:
你的程序我在看,有的函数不太懂,如果可以的话就给分

把原来的文件中的数据读到缓存中(数组就行了),然后检测数组中的字符,每发现一个ab连在一起的时候,就后退一个字符,把b之前的字符写到文件中去,并换行,如此重复操作,直到所有字符者写完为止。
至于替换文件的问题,如果不特殊说明是追加的话,原文件会自动被替换的(文件指针在文件头)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-10
//---------------------------------------------------------------------------

#include <stdio.h>
#define FILENAME "c:\\in.txt"/*源文件名*/
int main(VOID)
{
FILE *fp,*tmp;
char a,b;
tmp=tmpfile();/*创建一个临时文件*/
fp=fopen(FILENAME,"r");
while (!feof(fp))
{
a=getc(fp);

fwrite(&a,sizeof(char),1,tmp);
if (a=='a') {
b=getc(fp);
if (a=='a'&&b=='b') {
a='\n';

fwrite(&a,sizeof(char),1,tmp);
}

fwrite(&b,sizeof(char),1,tmp);
}
}
rewind(tmp);

freopen(FILENAME,"w",fp);
while (!feof(tmp)){
fread(&a,sizeof(char),1,tmp);
if (a==-1) break;
fputc(a,fp);
}
fclose(fp);
fclose(tmp);
return 0;
}
//---------------------------------------------------------------------------本回答被提问者采纳
相似回答