C语言fread读取每行
时间: 2023-07-02 20:17:51 浏览: 48
fread() 函数是用于读取二进制文件的,它不适用于读取文本文件。如果你想要读取文本文件并逐行处理,可以使用 fgets() 函数来实现。下面是一个使用 fgets() 函数读取文件的例子:
```c
#include <stdio.h>
#define MAX_LINE_LENGTH 100
int main() {
FILE *fp = fopen("example.txt", "r"); // 打开文件
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) {
printf("%s", line); // 处理每一行数据
}
fclose(fp); // 关闭文件
return 0;
}
```
在这个例子中,我们打开了一个名为 example.txt 的文件,并使用 fgets() 函数读取每一行数据。fgets() 函数从文件中读取一行数据并将其存储在 line 数组中,最多存储 MAX_LINE_LENGTH 个字符。如果读取成功,fgets() 函数返回指向 line 数组的指针,否则返回 NULL。在 while 循环中,我们处理每一行数据,本例中只是简单地将其输出到屏幕上。最后,我们使用 fclose() 函数关闭文件。
相关问题
C语言fread按行读数据
在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` 函数会读取换行符,因此不需要在打印时再加上换行符。
C语言fread函数
C语言中的fread()函数是一个文件读取函数,用于从文件中读取数据。它的函数原型如下:
```c
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
```
其中,参数ptr是指向要读取数据的内存地址的指针;size是每个数据项的字节数;count是要读取的数据项的个数;stream是指向FILE类型结构体的指针,它标识了要读取的文件。
fread()函数的返回值是成功读取的数据项个数,它的返回值类型为size_t(unsigned int)型。
以下是一个使用fread()函数读取二进制文件的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#define SIZE 30
int main()
{
FILE* fp;
int arr[SIZE] = { 0 };
int itemsread = 0;
if ((fp = fopen("data.bin", "rb")) == NULL) {
printf("Failed to open file.\n");
exit(1);
}
itemsread = fread(arr, sizeof(int), SIZE, fp);
printf("itemsread = %d\n", itemsread);
fclose(fp);
int i = 0;
for (i = 0; i < SIZE; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
```
在上面的例子中,我们打开了一个名为data.bin的二进制文件,并使用fread()函数读取了其中的数据。我们将读取的数据存储在了一个名为arr的整型数组中,并打印了读取的数据项个数和数组中的数据。