C语言fread按行读数据
时间: 2023-07-02 18:14:28 浏览: 245
C语言实现按行读写文件
5星 · 资源好评率100%
在C语言中,`fread`函数是按照二进制数据块读取文件数据的,无法直接按行读取。如果想要按行读取,可以采用以下两种方法:
1. 逐个字符读取,遇到换行符则表示读完一行。
```c
#include <stdio.h>
int main() {
FILE *fp;
char buffer[1024];
char ch;
int i = 0;
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
while ((ch = fgetc(fp)) != EOF) {
if (ch == '\n') {
buffer[i] = '\0'; // 将字符串结尾加上'\0'
printf("%s\n", buffer);
i = 0;
} else {
buffer[i++] = ch;
}
}
fclose(fp);
return 0;
}
```
在这个示例中,我们使用 `fgetc` 函数逐个字符读取文件内容,每读到一个换行符就表示读完了一行,打印出该行内容并清空 `buffer` 数组,以便读取下一行。
2. 使用 `fgets` 函数读取整行数据。
```c
#include <stdio.h>
int main() {
FILE *fp;
char buffer[1024];
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
while(fgets(buffer, sizeof(buffer), fp) != NULL) {
printf("%s", buffer);
}
fclose(fp);
return 0;
}
```
在这个示例中,我们使用 `fgets` 函数读取整行数据,每次读取一行数据,存储到 `buffer` 数组中,并打印出来。需要注意的是,`fgets` 函数会读取换行符,因此不需要在打印时再加上换行符。
阅读全文