C语言文本文件指定行修改
时间: 2024-10-05 13:00:48 浏览: 39
利用C语言替换文件中某一行的方法
在C语言中,直接修改文本文件的某一行通常涉及到读取整个文件、修改需要的行内容,然后再写回文件。因为C语言标准库提供的文件操作函数(如`fopen`, `fclose`, `fgets`, `fprintf`等)并不直接支持按行修改文件,所以这通常是一个涉及数组临时存储和复杂处理的过程。
以下是一个简单的示例,展示如何读取文件到内存,修改特定行,然后将更改写回文件:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINES 100 // 假设最大行数
int main() {
char line[MAX_LINES][100]; // 用于存储每一行
int linenum = 0;
FILE *fp;
// 打开文件
if ((fp = fopen("input.txt", "r+")) == NULL) {
perror("Error opening file");
return 1;
}
// 读取所有行并保存到数组
while (fgets(line[linenum], sizeof(line[linenum]), fp)) {
if (line[linenum][strlen(line[linenum]) - 1] == '\n') { // 去除换行符
line[linenum][strlen(line[linenum])-1] = '\0';
}
linenum++;
if (linenum >= MAX_LINES) {
printf("Too many lines in the file, cannot modify.\n");
fclose(fp);
return 1;
}
}
// 修改指定行的内容
if (linenum > 0 && linenum < MAX_LINES) {
line[linenum-1] = "New content"; // 替换目标行
} else {
printf("Invalid line number for modification.\n");
fclose(fp);
return 1;
}
// 写回文件
rewind(fp); // 重置文件指针
for (int i = 0; i < linenum; i++) {
fprintf(fp, "%s\n", line[i]); // 写入修改后的行
}
fclose(fp);
printf("Line modified successfully.\n");
return 0;
}
```
阅读全文