用int read(struct person p[])读取数据文件的函数,其中数组p用于存放从文件person.txt中读取到的公民信息,函数返回读取到的公民信息记录数代码
时间: 2024-03-15 11:44:17 浏览: 66
读取二进制文件
4星 · 用户满意度95%
好的,这是一个关于结构体数组的问题。假设我们有一个名为person的结构体,它包含三个成员:name、age和gender。现在我们有一个存储person数据的文件person.txt,我们想要从文件中读取数据,并将数据存储到一个person类型的数组中。
那么,我们可以使用如下的代码来实现:
```c
#include <stdio.h>
struct person {
char name[20];
int age;
char gender;
};
int read(struct person p[]) {
int i = 0;
FILE *fp = fopen("person.txt", "r");
if (fp == NULL) {
printf("打开文件失败!\n");
return 0;
}
while (!feof(fp)) {
fscanf(fp, "%s %d %c", p[i].name, &p[i].age, &p[i].gender);
i++;
}
fclose(fp);
return i;
}
int main() {
struct person p[100];
int count = read(p);
printf("读取到的公民信息记录数:%d\n", count);
for (int i = 0; i < count; i++) {
printf("%s %d %c\n", p[i].name, p[i].age, p[i].gender);
}
return 0;
}
```
在上面的代码中,我们定义了一个名为person的结构体,然后定义了一个名为read的函数,该函数接受一个person类型的数组作为参数。在函数中,我们首先打开数据文件person.txt,并检查文件是否打开成功。然后,在一个while循环中,我们使用fscanf函数从文件中读取一个person的数据,然后将其存储到数组中,并将数组下标加1。最后,我们关闭文件并返回数组中存储的数据的数量。
在主函数中,我们定义了一个person类型的数组,然后调用read函数将数据读取到数组中。最后,我们打印读取到的公民信息记录数,并使用循环遍历数组,并将每个person的数据打印到控制台上。
希望这能够帮助你解决问题。
阅读全文