C读取后无法写入文件

时间:2020-01-14 02:32:09

标签: c printf fgets

我在程序中有一个功能,必须从文件中删除给定的字符串。为此,将整个文件重写为一个临时文件,然后覆盖原始文件。 使用删除的字符串保存临时文件可以,但是覆盖原始文件不起作用。

这是怎么了?

int slot = key % sizeof( *ht);

r +允许您读取文件并覆盖它。我错了吗?

1 个答案:

答案 0 :(得分:0)

参考@KamilCuk的答案,这是解决方案:

#define MAXCHAR 10000
void delPath(char stringToDelete[], char bashrcDir[]) {
    FILE *bashrc = fopen(bashrcDir, "r");
    char str[MAXCHAR];

    if (bashrc != NULL) {
        FILE *tempfile = fopen("./tempFile.txt", "w");

        while (fgets(str, MAXCHAR, bashrc) != NULL) {
            if (!strstr(str, stringToDelete)) {
                fprintf(tempfile, "%s", str);
            }
        }
        fclose(bashrc);
        fclose(tempfile);

        FILE *newTempfile = fopen("./tempFile.txt", "r");
        FILE *newBashrc = fopen(bashrcDir, "w");
        while (fgets(str, MAXCHAR, newTempfile) != NULL) {
            fprintf(newBashrc, "%s", str);
        }

        fclose(newTempfile);
        fclose(newBashrc);

        remove("./tempFile.txt");
    }
}

谢谢!