文件指针实现删除当前指针位置所指行的文件内容
时间: 2023-11-26 09:06:22 浏览: 191
要实现删除当前指针位置所指行的文件内容,可以按照以下步骤:
1. 打开文件,以可读写方式打开(如“r+”模式)。
2. 定位到当前指针位置所在的行,可以使用 fseek 函数根据每行的字符数和行数来定位。也可以使用 fgets 函数读取每行的内容,直到找到目标行。
3. 记录当前指针位置。
4. 从目标行的开头读取数据,将其复制到当前指针位置。可以使用 fgets 函数读取每行的数据,并使用 fwrite 函数将其写入文件。
5. 将文件指针移动到原位置,并使用 ftruncate 函数截断文件,删除目标行后面的内容。
6. 关闭文件。
下面是一个示例代码,实现了删除指定行的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINE_LEN 100
int main() {
int line, count = 1;
char temp[MAX_LINE_LEN];
FILE *fp, *tmpfp;
fp = fopen("test.txt", "r+");
tmpfp = fopen("tmp.txt", "w+");
printf("Enter line number to delete: ");
scanf("%d", &line);
// 逐行读取文件
while (fgets(temp, MAX_LINE_LEN, fp) != NULL) {
// 如果不是目标行,则将其写入临时文件
if (count != line) {
fputs(temp, tmpfp);
}
count++;
}
// 截断文件
ftruncate(fileno(fp), 0L);
rewind(tmpfp);
// 将临时文件内容复制回原文件
while (fgets(temp, MAX_LINE_LEN, tmpfp) != NULL) {
fputs(temp, fp);
}
fclose(fp);
fclose(tmpfp);
return 0;
}
```
注意,该代码只能删除文本文件中的某一行,对于二进制文件不适用。同时,该代码也没有考虑目标行为空行或者不存在的情况,需要根据实际需求进行修改。
阅读全文