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;
}
此函数修改增加1个文件的文件。我用.txt文件测试了它,其中只有“abcde”。结果是一个永不结束的过程,一个以'b'开头的大文件继续大量的'c',并以另一个'b'结束。调试我发现问题是“fgetc(文件);”在循环。在第二次迭代中,它开始总是'b'。我使用MinGW和CodeBlocks。我无法理解错误在哪里。非常感谢和抱歉英语。
答案 0 :(得分:0)
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);
}
答案 1 :(得分:-1)
使用:
while((c = fgetc(file))!= EOF)并且fputc到file2而不是同一个文件!!