fscanf读入结构体数组
时间: 2024-12-22 19:11:06 浏览: 14
`fscanf`函数是C标准库中的一个用于从指定文件流中按照格式读取数据的函数。当你想要读取结构体数组时,你需要首先定义一个包含所需字段的结构体,然后将结构体的地址作为`fscanf`的第一个参数传递。
假设有一个名为`MyStruct`的结构体,例如:
```c
struct MyStruct {
int id;
char name[50];
float value;
};
```
如果你有一个这样的结构体数组,可以这样做来读取:
```c
struct MyStruct myArray[10]; // 假设我们有10个元素的数组
FILE *fp = fopen("data.txt", "r"); // 打开文件
if (fp == NULL) {
printf("Failed to open file.\n");
return;
}
// 使用fscanf按行读取并解析数据
for (int i = 0; i < 10 && fscanf(fp, "%d %s%f\n", &myArray[i].id, myArray[i].name, &myArray[i].value) == 3; ++i) {
// 成功读取一行数据,继续下一次循环
} else if (feof(fp)) {
printf("End of file reached.\n");
} else {
printf("Error reading from file.\n");
}
fclose(fp); // 关闭文件
```
在这个例子中,`%d`, `%s`, 和 `%f` 分别对应于 `id`, `name[]` 字符串以及 `value` 的类型。注意每个字段后紧跟的是结构体成员的指针地址。
阅读全文