C函数修改文本文件

时间:2014-11-27 22:42:11

标签: c

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。我无法理解错误在哪里。非常感谢和抱歉英语。

2 个答案:

答案 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而不是同一个文件!!