linux下,read函数读取多行文件, 每次读到每行文件的\n,读下一行,直到读到EOF
时间: 2024-09-24 20:02:27 浏览: 28
Pandas之read_csv()读取文件跳过报错行的解决
在Linux环境下,`read`函数主要用于从输入流(如文件描述符、管道或网络连接)中逐字节地读取数据。如果你想逐行读取文件,特别是在处理文本文件时,通常会配合循环结构一起使用。下面是一个基本的例子:
```c
#include <stdio.h>
#define BUFFER_SIZE 1024
int main() {
FILE* file = fopen("yourfile.txt", "r"); // 打开文件
if (file == NULL) {
perror("Failed to open file");
return 1;
}
char buffer[BUFFER_SIZE];
size_t bytes_read;
while ((bytes_read = read(fileno(file), buffer, sizeof(buffer))) > 0) { // 读取直到遇到EOF
buffer[bytes_read] = '\0'; // 添加空字符终止字符串
printf("%s", buffer); // 输出读取的一行
if (buffer[bytes_read - 1] != '\n') break; // 如果不是换行符,继续读取下一行
}
if (ferror(file)) {
perror("Error reading from file");
fclose(file);
} else {
fclose(file); // 关闭文件
}
return 0;
}
```
在这个例子中,`read`函数会在每次迭代中读取`BUFFER_SIZE`字节的数据,直到遇到文件结束符(即EOF)。如果最后一组读取的数据中没有换行符(`'\n'`),那么就说明已经到达文件末尾了。
阅读全文