2.Linux平台下利用系统接口函数按照行读写文件; 要求:支持大文件(10M)一次性读入; 支持文件定位读写,读写位置(行,字符)通过参数传递。
时间: 2024-04-08 11:35:32 浏览: 19
在Linux平台下,可以使用系统接口函数来按行读写文件。以下是一个示例代码,可以满足你的要求:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINE_LENGTH 1024
// 按行读取文件
void read_file_by_line(const char* filename, int line_num) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("Failed to open file: %s\n", filename);
return;
}
char line[MAX_LINE_LENGTH];
int current_line = 0;
while (fgets(line, sizeof(line), file) != NULL) {
if (current_line == line_num) {
printf("Line %d: %s", current_line, line);
break;
}
current_line++;
}
fclose(file);
}
// 按行写入文件
void write_file_by_line(const char* filename, int line_num, const char* content) {
FILE* file = fopen(filename, "r+");
if (file == NULL) {
printf("Failed to open file: %s\n", filename);
return;
}
char line[MAX_LINE_LENGTH];
int current_line = 0;
while (fgets(line, sizeof(line), file) != NULL) {
if (current_line == line_num) {
fseek(file, -strlen(line), SEEK_CUR); // 定位到目标行的开头
fputs(content, file); // 写入内容
break;
}
current_line++;
}
fclose(file);
}
int main() {
const char* filename = "example.txt";
// 按行读取文件
read_file_by_line(filename, 2);
// 按行写入文件
write_file_by_line(filename, 3, "This is a new line.\n");
return 0;
}
```
这段代码中,`read_file_by_line`函数用于按行读取文件,`write_file_by_line`函数用于按行写入文件。你可以根据需要调用这两个函数来实现文件的定位读写操作。注意,文件的定位是通过行号来实现的,行号从0开始计数。另外,为了支持大文件一次性读入,可以适当增大`MAX_LINE_LENGTH`的值。
希望这个例子能够帮助到你!如果还有其他问题,请继续提问。