c语言从txt文件中逐行读入数据存到数组中的实现方法
时间: 2023-04-27 19:03:23 浏览: 711
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语言编写:从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文件中读取到的数据存储到结构体数组中了。
C语言通过txt文件通过txt文件读入单列数据
C语言也可以通过文件读取单列数据。以下是一个示例代码:
```c
#include <stdio.h>
int main() {
FILE *fp;
char buffer[100];
fp = fopen("data.txt", "r"); // 打开文件
while (fgets(buffer, 100, fp) != NULL) { // 逐行读取文件内容
printf("%s", buffer); // 打印读入的数据
}
fclose(fp); // 关闭文件
return 0;
}
```
在上面的代码中,我们使用了C语言的文件操作函数fopen()、fgets()和fclose()。fopen()函数打开指定的txt文件,fgets()函数逐行读取文件内容,存储在一个字符数组中,并在读取完毕后返回NULL。我们可以通过while循环不断调用fgets()函数来逐行读取文件内容,直到读取完毕。最后,我们使用fclose()函数关闭文件。
需要注意的是,fgets()函数会将读取到的行末换行符也存储在字符数组中,因此在使用存储的数据时需要注意处理换行符。