C语言从in文件中逐行读入数据存到数组中的实现方法
时间: 2024-09-07 08:03:03 浏览: 83
在C语言中,从文本文件(如".in"文件)中逐行读取数据并存储到数组中,通常需要使用`fscanf`函数配合循环结构。以下是一个简单的示例,假设你想读取整数并存储在一个动态分配的数组中:
```c
#include <stdio.h>
#include <stdlib.h> // 需要用到malloc函数来动态分配内存
#define MAX_LINES 100 // 文件最大行数,可以根据实际需求调整
int main() {
FILE *file = fopen("input.in", "r"); // 打开文件,如果不存在则返回NULL
if (file == NULL) {
perror("Error opening file");
return 1;
}
int *array = malloc(MAX_LINES * sizeof(int)); // 动态分配足够大的数组
if (array == NULL) {
perror("Memory allocation failed");
fclose(file);
return 1;
}
char line[100]; // 存储一行的数据,这里假设每行不超过100字符
int i = 0;
while (fgets(line, sizeof(line), file)) { // 逐行读取文件
int value;
if (sscanf(line, "%d", &value) == 1) { // 如果能解析为整数
array[i] = value; // 将值存储到数组
i++;
} else {
printf("Invalid input on line %d, skipping...\n", i+1); // 没有正确解析的行,跳过
}
}
fclose(file); // 关闭文件
// 现在array里已经存储了所有合法的行数据
// 可以进一步处理这些数据,例如计算平均值、查找最大值等
free(array); // 使用完后记得释放动态内存
return 0;
}
```
阅读全文