C函数修改文本文件
此函数用于修改增加1个字符的文件。我用一个只有“abcde”的.txt文件测试了它。结果是一个永远不会结束的过程,一个以“b”开头的大文件,以大量的“c”继续,以另一个“b”结束。调试时我发现问题出在循环中的“fgetc(file);”。在第二次迭代中,它总是得到“b”。我使用MinGW和代码块。我不明白哪里出错了。非常感谢并抱歉使用英语。使用:C函数修改文本文件,c,C,此函数用于修改增加1个字符的文件。我用一个只有“abcde”的.txt文件测试了它。结果是一个永远不会结束的过程,一个以“b”开头的大文件,以大量的“c”继续,以另一个“b”结束。调试时我发现问题出在循环中的“fgetc(file);”。在第二次迭代中,它总是得到“b”。我使用MinGW和代码块。我不明白哪里出错了。非常感谢并抱歉使用英语。使用: 而((c=fgetc(文件))!=EOF)并对文件2执行fputc,而不是对同一文件 post到另一个不相同的文件,从a.txt读取并写入b.txt,
而((c=fgetc(文件))!=EOF)并对文件2执行fputc,而不是对同一文件 post到另一个不相同的文件,从a.txt读取并写入b.txt,您还可以在char buffer[]中读取文件并执行char[i]++;要将缓冲区中的所有字符增加为1,然后将缓冲区[]写入文本文件,您不需要通过charI读取char。我会尝试一下,这似乎很有帮助。谢谢。你为什么打电话给fflush?@doogabides让它来确定写入文件的时间。我认为没必要。IO应该被缓冲以提高性能。你将阅读下一个字符,所以谁在乎你后面的字符是现在更新还是以后更新。@doogabides可能,如果你不
fflush
,这个程序就不能正常工作。我不知道为什么需要fflush,但它解决了问题!
int cripta(string nomef) {
FILE* file=fopen(nomef, "r+");
if (file==NULL)
return error;
char c;
long pos;
pos = ftell(file);
c=fgetc(file);
while (c!=EOF) {
fseek(file, -1, SEEK_CUR);
pos = ftell(file);
c++;
fputc(c, file);
pos = ftell(file);
c=fgetc(file);
pos = ftell(file);
}
fclose(file);
return done;
}
char c;
long pos;
pos = ftell(file);
c=fgetc(file);
while (c!=EOF) {
fseek(file, pos, SEEK_SET);
fputc(++c, file);
fflush(file);
pos = ftell(file);
c=fgetc(file);
}