
C语言如何将文件中的数据读入数组
要在C语言中将文件中的数据读入数组,可以通过文件操作函数、循环结构、数据类型转换等操作实现。本文将详细介绍如何使用这些方法来读取文件中的数据,并将其存储到数组中。
一、文件操作函数介绍
在C语言中,文件操作主要通过以下几个函数来实现:
- fopen():用于打开文件;
- fclose():用于关闭文件;
- fscanf():用于从文件中读取格式化数据;
- fgets():用于从文件中读取一行数据;
- fread():用于从文件中读取二进制数据。
以上这些函数都是在stdio.h库中定义的,因此我们需要包含这个头文件。
二、读取文件中的数据
1. 打开文件
使用fopen()函数可以打开文件,函数原型如下:
FILE *fopen(const char *filename, const char *mode);
其中,filename是文件名,mode是文件打开的模式,例如:
"r":只读模式;"w":写模式;"a":追加模式。
例如,要打开一个名为data.txt的文件,可以使用以下代码:
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
printf("无法打开文件n");
return -1;
}
2. 读取文件数据
要将文件中的数据读入数组,可以使用fscanf()或fgets()函数。以下是两种常见的方法:
方法1:使用fscanf()
假设文件中的数据是以空格分隔的整数,可以使用fscanf()函数读取数据:
int arr[100]; // 假设数组大小为100
int i = 0;
while (fscanf(file, "%d", &arr[i]) != EOF) {
i++;
}
方法2:使用fgets()
如果文件中的数据是每行一个整数,可以使用fgets()函数读取数据,并使用sscanf()函数将字符串转换为整数:
char line[100];
int arr[100]; // 假设数组大小为100
int i = 0;
while (fgets(line, sizeof(line), file)) {
sscanf(line, "%d", &arr[i]);
i++;
}
3. 关闭文件
读取完数据后,需要关闭文件,使用fclose()函数:
fclose(file);
三、详细示例
以下是一个完整的示例程序,演示如何读取文件data.txt中的整数数据,并将其存储到数组中:
#include <stdio.h>
int main() {
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
printf("无法打开文件n");
return -1;
}
int arr[100];
int i = 0;
while (fscanf(file, "%d", &arr[i]) != EOF) {
i++;
}
fclose(file);
printf("读取的数组数据为:n");
for (int j = 0; j < i; j++) {
printf("%d ", arr[j]);
}
printf("n");
return 0;
}
四、处理不同数据类型和格式
1. 读取字符串
如果文件中的数据是字符串,可以使用fgets()函数读取每行数据,并将其存储到字符数组中:
#include <stdio.h>
#include <string.h>
int main() {
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
printf("无法打开文件n");
return -1;
}
char arr[100][100]; // 假设数组大小为100,每个字符串长度不超过100
int i = 0;
while (fgets(arr[i], sizeof(arr[i]), file)) {
arr[i][strcspn(arr[i], "n")] = '