У меня есть функция в программе, которая должна удалить данную строку из файла. Для этого переписывает весь файл во временный файл, а затем перезаписывает исходный файл. Сохранение временного файла с удаленной строкой работает, но перезапись исходного файла не работает.
Что здесь не так?
#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+");
// Create tempFile and copy content without given string
while (fgets(str, MAXCHAR, bashrc) != NULL) {
if (!strstr(str, stringToDelete)) {
fprintf(tempfile, "%s", str);
}
}
// Read tempFile and overwrite original file - this doesn't work
while (fgets(str, MAXCHAR, tempfile) != NULL) {
fprintf(bashrc, "%s", str);
}
fclose(tempfile);
}
fclose(bashrc);
}
r + позволяет прочитать файл и перезаписать его. Я не прав?