C语言教程:如何将文件中的数据读取并存储到数组中

更新时间:2024-04-28 09:19:51   人气:4324
在C语言编程中,处理和操作文件内容是一项常见的任务。为了实现从一个文本或二进制文件中读取数据并将这些数据存入数组的功能,我们可以采用标准库<stdio.h>提供的函数如fopen(), fread()等进行高效的操作。

以下是一个详细的步骤指南:

首先,在程序开始部分包含必要的头文件,并定义所需的变量类型及大小:

c

#include <stdio.h>

#define FILENAME "data.txt" // 假设你要读取的文件名为"data.txt"
#define ARRAY_SIZE 100 // 定义你的目标数组容量

int main()
{
int array[ARRAY_SIZE]; // 创建用于存放文件数据的整数型数组

...
}


接下来打开指定路径下的文件以只读模式("r"):

c

FILE *file = fopen(FILENAME, "rb");
// 使用"fopen()"函数来打开文件;'b'标志对于非文本(例如二进制)文件是可选但推荐使用的,
// 这样可以确保跨平台兼容性以及正确解读字节顺序。

if (file == NULL) {
printf("Failed to open file.\n");
return -1; // 如果无法打开,则返回错误状态码
}

...

然后通过循环结构配合`fread()`函数逐个或者批量地把文件内数据载入预先创建好的数组里:

c

size_t items_read;
items_read = fread(array, sizeof(int), ARRAY_SIZE, file);

if(ferror(file)) {
perror("Error reading from the file: ");
fclose(file);
return -1;
}

fclose(file);

printf("Successfully read %zu elements into the array.\n", items_read );

上述代码段的工作原理如下:
- `fread()` 函数接收四个参数:要填充的数据缓冲区指针、单个元素尺寸、期望读取的数量以及指向已开启文件流的指针;
- 根据传给它的内存块(即我们的数组array),它会尝试按sizeof(int)大小一次读取多个值直到填满整个数组或者是遇到文件末尾为止;
- 最后检查是否有发生任何与输入/输出相关的错误 (`ferror`) ,并在成功关闭了文件之后报告实际读取到多少项数值(`items_read`)。

需要注意的是,此示例假设文件中有足够的连续且适合放入integer类型的记录供我们加载至数组。实际情况可能需要更复杂的逻辑去解析文件格式并对异常情况进行妥善处理,比如当文件的实际长度小于预期数组大小时避免溢出问题。同时,请务必记得在完成对文件的所有操作后使用fclose()将其关闭,释放系统资源。