C语言如何删除文件中的一行数据
时间: 2024-02-09 17:07:20 浏览: 906
在C语言中,要删除文件中的一行数据,可以按照以下步骤进行操作:
1. 打开原文件并创建一个新文件。
2. 逐行读取原文件的数据。
3. 如果该行数据不是要删除的数据,则将该行数据写入新文件中。
4. 如果该行数据是要删除的数据,则不将该行数据写入新文件中。
5. 关闭原文件和新文件。
6. 删除原文件并将新文件重命名为原文件名。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp1, *fp2;
char filename[100], ch;
int delete_line, temp = 1;
printf("Enter file name: ");
scanf("%s", filename);
// 打开原文件
fp1 = fopen(filename, "r");
if (fp1 == NULL)
{
printf("File does not exist.\n");
exit(0);
}
// 创建一个新文件
fp2 = fopen("temp.txt", "w");
printf("Enter the line number you want to delete: ");
scanf("%d", &delete_line);
// 逐行读取原文件的数据
while ((ch = fgetc(fp1)) != EOF)
{
// 如果该行数据不是要删除的数据,则将该行数据写入新文件中
if (temp != delete_line)
{
fputc(ch, fp2);
}
// 计算行数
if (ch == '\n')
{
temp++;
}
}
// 关闭原文件和新文件
fclose(fp1);
fclose(fp2);
// 删除原文件并将新文件重命名为原文件名
remove(filename);
rename("temp.txt", filename);
printf("The contents of file after deleting a line:\n");
fp1 = fopen(filename, "r");
ch = fgetc(fp1);
while (ch != EOF)
{
printf("%c", ch);
ch = fgetc(fp1);
}
fclose(fp1);
return 0;
}
```
运行代码后,程序会先提示输入要操作的文件名,然后提示输入要删除的行数。程序将会删除指定行数的数据,并将结果输出到控制台。注意,程序会直接操作文件,因此请务必备份好原文件。
阅读全文