c语言修改文件中某一行数据
时间: 2023-09-27 10:06:36 浏览: 768
c语言如何修改已经存在的文件中任意位置的数据.(注:而不是重新新建文件)
5星 · 资源好评率100%
要修改文件中某一行的数据,一般的做法是先将文件中的所有内容读入内存,然后修改对应的行,最后将修改后的内容写回文件中。具体的步骤如下:
1. 使用fopen函数打开文件,并以“读写”模式打开(例如:fopen("file.txt", "r+"))。
2. 使用fgets函数逐行读取文件内容,将每一行存储到一个缓冲区中。
3. 比较缓冲区中的内容与目标行是否匹配,如果匹配则修改缓冲区中的内容。
4. 将修改后的缓冲区内容写回文件中,使用fseek函数将文件指针移到下一行继续读取。
5. 关闭文件,使用fclose函数。
下面是一个简单的示例代码,可以修改文件中第3行的数据:
```c
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp;
char buf[1024];
int line_num = 3; // 修改第3行的数据
char new_data[] = "new data for line 3";
int count = 0;
fp = fopen("file.txt", "r+");
if (fp == NULL) {
printf("Failed to open file.\n");
return -1;
}
while (fgets(buf, sizeof(buf), fp)) {
count++;
if (count == line_num) {
// 找到目标行
strcpy(buf, new_data);
fseek(fp, -strlen(buf), SEEK_CUR);
fputs(buf, fp);
break;
}
}
fclose(fp);
return 0;
}
```
注意:这段代码只适用于每行数据长度不超过缓冲区大小的情况。如果需要处理超长行,需要使用动态内存分配等方法来处理。
阅读全文