如何从文件中读取数据?
在C语言中,你可以使用标准库中的函数来从文件中读取数据。下面是一些常用的方法:
使用 fscanf()
读取格式化数据
fscanf()
函数类似于 scanf()
,但它从文件中读取数据而不是从标准输入。
c复制代码
#include <stdio.h> |
|
int main() { |
|
FILE *file; |
|
int number; |
|
float f; |
|
char str[100]; |
|
file = fopen("data.txt", "r"); |
|
if (file == NULL) { |
|
perror("Error opening file"); |
|
return 1; |
|
} |
|
// 从文件中读取数据 |
|
while (fscanf(file, "%d %f %s", &number, &f, str) == 3) { |
|
printf("Read: %d, %f, %s\n", number, f, str); |
|
} |
|
if (ferror(file)) { |
|
perror("Error reading file"); |
|
} else { |
|
printf("End of file reached.\n"); |
|
} |
|
fclose(file); |
|
return 0; |
|
} |
在上面的代码中,fscanf()
从文件中读取一个整数、一个浮点数和一个字符串,直到文件结束或出现错误。
使用 fgets()
读取一行
fgets()
函数用于从文件中读取一行文本。
c复制代码
#include <stdio.h> |
|
#include <string.h> |
|
int main() { |
|
FILE *file; |
|
char line[100]; |
|
file = fopen("text.txt", "r"); |
|
if (file == NULL) { |
|
perror("Error opening file"); |
|
return 1; |
|
} |
|
// 从文件中读取每一行 |
|
while (fgets(line, sizeof(line), file)) { |
|
printf("%s", line); |
|
} |
|
if (ferror(file)) { |
|
perror("Error reading file"); |
|
} else { |
|
printf("End of file reached.\n"); |
|
} |
|
fclose(file); |
|
return 0; |
|
} |
fgets()
将读取一行,包括换行符(如果有的话),并将其存储在提供的缓冲区中。
使用 fread()
读取二进制数据
如果你需要读取二进制数据或大量的数据块,可以使用 fread()
函数。
c复制代码
#include <stdio.h> |
|
#define BUFFER_SIZE 10 |
|
int main() { |
|
FILE *file; |
|
int buffer[BUFFER_SIZE]; |
|
size_t itemsRead; |
|
file = fopen("binary_data.bin", "rb"); |
|
if (file == NULL) { |
|
perror("Error opening file"); |
|
return 1; |
|
} |
|
// 从文件中读取二进制数据 |
|
itemsRead = fread(buffer, sizeof(int), BUFFER_SIZE, file); |
|
if (itemsRead > 0) { |
|
printf("Read %zu integers: ", itemsRead); |
|
for (size_t i = 0; i < itemsRead; ++i) { |
|
printf("%d ", buffer[i]); |
|
} |
|
printf("\n"); |
|
} |
|
if (ferror(file)) { |
|
perror("Error reading file"); |
|
} else { |
|
printf("End of file reached.\n"); |
|
} |
|
fclose(file); |
|
return 0; |
|
} |
在上面的代码中,fread()
尝试从文件中读取 BUFFER_SIZE
个整数。fread()
返回实际读取的项数,这个数可能会少于请求的项数,尤其是当接近文件末尾时。
在使用 fread()
时,你通常需要检查返回值以确保读取了预期数量的项。
注意事项
- 在读取文件时,总是检查返回值以确保操作成功。
- 使用
ferror()
函数来检查是否发生了读取错误。 - 使用
feof()
函数来检查是否已到达文件末尾。 - 在完成文件操作后,使用
fclose()
关闭文件。
这些是从文件中读取数据的几种基本方法。根据你的具体需求和数据格式,你可能需要选择最适合你的方法。
本文含有隐藏内容,请 开通VIP 后查看