在C語言中,要刪除文件中的某一行,可以實現以下步驟:
打開待操作的文件,使用fopen()
函數打開文件,指定打開方式為讀寫模式(“r+”)。
創建一個臨時文件,使用fopen()
函數創建一個新的臨時文件,并指定打開方式為寫模式(“w”)。
逐行讀取原文件,并將需要刪除的行過濾掉,將其余行寫入臨時文件。
關閉原文件和臨時文件。
刪除原文件,使用remove()
函數刪除原文件。
將臨時文件重命名為原文件,使用rename()
函數將臨時文件重命名為原文件。
下面是一個示例代碼:
#include <stdio.h>
void deleteLineFromFile(const char* filename, int line_number) {
FILE *file, *temp;
char ch;
int current_line = 1;
// 打開原文件
file = fopen(filename, "r+");
if (file == NULL) {
printf("無法打開文件\n");
return;
}
// 創建臨時文件
temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("無法創建臨時文件\n");
fclose(file);
return;
}
// 逐行讀取原文件,將非待刪除行寫入臨時文件
ch = fgetc(file);
while (ch != EOF) {
if (current_line != line_number) {
fputc(ch, temp);
}
if (ch == '\n') {
current_line++;
}
ch = fgetc(file);
}
// 關閉文件
fclose(file);
fclose(temp);
// 刪除原文件
remove(filename);
// 將臨時文件重命名為原文件
rename("temp.txt", filename);
printf("已刪除第 %d 行\n", line_number);
}
int main() {
const char* filename = "example.txt";
int line_number = 3;
deleteLineFromFile(filename, line_number);
return 0;
}
在示例代碼中,將要刪除的文件名作為參數傳遞給deleteLineFromFile()
函數,并指定要刪除的行號。函數會逐行讀取原文件并將非待刪除行寫入臨時文件,最后將臨時文件重命名為原文件。運行示例代碼后,將會刪除文件"example.txt"中的第3行。