c语言 读入txt数据文件存入数组,并输出

在C语言中,读取文本文件的数据并存储到数组中是一个常见的操作。下面是一个详细的示例,展示了如何从一个文本文件读取数据,存储到数组中,并输出这些数据。

1. 准备工作

假设我们有一个名为data.txt的文本文件,内容如下:

10 20 30 40 50

每行包含一个整数,我们将这些整数读取到一个数组中,并输出。

2. 示例代码

以下是一个完整的示例代码,演示如何实现这个过程:

c
#include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 // 定义数组的最大大小 int main() { FILE *file; int numbers[MAX_SIZE]; // 定义数组存储读取的数据 int count = 0; // 记录实际读取的元素数量 int num; // 打开文件以进行读取 file = fopen("data.txt", "r"); if (file == NULL) { perror("Error opening file"); return EXIT_FAILURE; } // 读取文件中的数据并存储到数组中 while (fscanf(file, "%d", &num) != EOF) { if (count >= MAX_SIZE) { fprintf(stderr, "Array size exceeded\n"); fclose(file); return EXIT_FAILURE; } numbers[count++] = num; } // 关闭文件 fclose(file); // 输出数组中的数据 printf("Data read from file:\n"); for (int i = 0; i < count; i++) { printf("%d\n", numbers[i]); } return EXIT_SUCCESS; }

3. 代码解析

  1. 包含头文件:包含必要的头文件<stdio.h><stdlib.h>,分别用于输入输出操作和退出程序。

  2. 定义数组和常量

    • MAX_SIZE:定义数组的最大大小,以避免数组溢出。
    • numbers[MAX_SIZE]:定义一个整数数组来存储读取的数据。
    • count:记录实际读取的元素数量。
  3. 打开文件

    • 使用fopen函数以只读模式打开文件。如果文件无法打开,使用perror输出错误信息,并退出程序。
  4. 读取文件数据

    • 使用fscanf函数从文件中逐行读取整数。fscanf返回值为EOF表示文件结束。
    • 如果数组已满,输出错误信息并退出程序。这里使用了count变量来跟踪读取的元素数量。
  5. 关闭文件

    • 使用fclose关闭文件,以释放资源。
  6. 输出数组数据

    • 使用printf函数输出数组中的数据。

4. 处理文件格式

如果文件的格式更复杂(如包含非整数数据或不同的数据格式),可能需要相应地修改读取和解析逻辑。例如,处理浮点数、字符串等数据类型需要使用不同的格式说明符和处理方式。

5. 错误处理

  • 文件打开失败:确保文件路径和名称正确,如果文件不存在或无法访问,会导致fopen失败。
  • 数组溢出:确保读取的数据量不超过数组的最大大小。可以根据实际需求动态调整数组大小或使用动态内存分配(如malloc)。

总结

这个示例展示了如何在C语言中从文本文件读取数据,将其存储到数组中,并输出这些数据。通过使用文件操作函数如fopenfscanffclose,可以高效地处理文本文件中的数据。根据文件格式和数据类型的不同,可能需要相应地调整代码。