c语言

c语言如何删除文件中的某一行

小亿
791
2023-08-07 22:27:01
栏目: 编程语言

在C语言中,要删除文件中的某一行,可以实现以下步骤:

  1. 打开待操作的文件,使用fopen()函数打开文件,指定打开方式为读写模式(“r+”)。

  2. 创建一个临时文件,使用fopen()函数创建一个新的临时文件,并指定打开方式为写模式(“w”)。

  3. 逐行读取原文件,并将需要删除的行过滤掉,将其余行写入临时文件。

  4. 关闭原文件和临时文件。

  5. 删除原文件,使用remove()函数删除原文件。

  6. 将临时文件重命名为原文件,使用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行。

0
看了该问题的人还看了