c语言从txt文件中逐行读入数据存到数组中的实现方法
时间: 2023-04-27 07:03:23 浏览: 1316
1. 打开文件
使用fopen函数打开txt文件,返回文件指针。
2. 读取文件
使用fgets函数逐行读取文件内容,将每行数据存储到数组中。
3. 关闭文件
使用fclose函数关闭文件。
示例代码:
```
#include <stdio.h>
#define MAX_LINE 100 // 定义每行最大字符数
int main() {
FILE *fp;
char line[MAX_LINE];
int i = ;
int data[MAX_LINE]; // 存储数据的数组
fp = fopen("data.txt", "r"); // 打开文件
if (fp == NULL) {
printf("文件打开失败!\n");
return 1;
}
while (fgets(line, MAX_LINE, fp) != NULL) { // 逐行读取文件内容
data[i++] = atoi(line); // 将每行数据转换为整数并存储到数组中
}
fclose(fp); // 关闭文件
// 输出数组中的数据
for (int j = ; j < i; j++) {
printf("%d ", data[j]);
}
return ;
}
```
相关问题
C语言从in文件中逐行读入数据存到数组中的实现方法
在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;
}
```
C语言编写:从data.txt文件中逐行读入数据存到结构体数组s[i]中的实现方法
可以使用C语言的文件操作函数来实现从data.txt文件中逐行读入数据存到结构体数组s[i]中的功能。具体实现方法如下:
1. 定义结构体类型和结构体数组:
```
typedef struct {
int id;
char name[20];
int score;
} Student;
Student s[100]; // 最多存放100个学生的信息
```
2. 打开文件并逐行读取数据:
```
FILE *fp;
char line[50]; // 假设每行数据最多包含50个字符
fp = fopen("data.txt", "r"); // 打开文件
if (fp == NULL) {
printf("Failed to open file\n");
return -1;
}
int i = 0;
while (fgets(line, sizeof(line), fp) != NULL) {
// 读取一行数据到line数组中
sscanf(line, "%d %s %d", &s[i].id, s[i].name, &s[i].score); // 解析数据并存入结构体数组
i++;
}
fclose(fp); // 关闭文件
```
3. 解析每行数据并存入结构体数组:
上面的代码中使用了sscanf函数来解析每行数据,它的用法类似于scanf函数,可以根据指定的格式字符串从字符串中读取数据。假设每行数据格式为"id name score",则格式字符串为"%d %s %d",其中"%d"表示读取整数,"%s"表示读取字符串,"%d"表示再次读取整数。
这样就可以将从data.txt文件中读取到的数据存储到结构体数组中了。
阅读全文