如何将信息从 .txt 扫描到结构数组?
How to scan info from .txt to array of structures?
我在info.txt中有这样的信息:
KHNU 300 12 24
SHEVCHENKA 500 15 32
KPI 900 13 35
GORSKOGO 645 14 45
我只需要将这些信息写入结构数组,但作为新手我不明白该怎么做。这是代码:
void readFile(FILE* pf);
struct University
{
char name[30];
int quantityOfStudents;
int quantityOfFaculties;
int quantityOfDepartments;
};
int main()
{
FILE* pf = fopen("info.txt", "rb");
readFile(pf);
system("pause");
return 1;
}
void readFile(FILE* pf)
{
if ((pf == NULL)) { printf("Error!"); exit(1); }
struct University *u[4] = malloc(4 * sizeof(struct University));
for (int i = 0; i < 4; i++)
{
fscanf(pf, "%s %d %d %d", &u[i]->name, &u[i]->quantityOfStudents, &u[i]->quantityOfFaculties, &u[i]->quantityOfDepartments);
}
}
但是,正如您可能猜到的那样,它不会扫描。
请告诉我如何将信息从 .txt 扫描到结构数组的算法!
谢谢。
我认为您的代码存在一些编译问题。您应该能够在编译代码时找到它们。我尝试修复它们,并通过修复这些问题让您的代码正常工作:
malloc
returns 指向已分配内存的指针而不是指针数组。所以你的结构分配语句是这样的:
struct University *u[4] = malloc(4 * sizeof(struct University));
应该是这样的:
struct University *u = (struct University *)malloc(4 * sizeof(struct University));
- 当您将文件内容扫描到结构数组中时;您使用
u[i]
访问结构数组并使用 ->
获取结构元素。但是 u[i]
解析为 struct University
而不是 struct University *
。我认为它应该看起来像这样:
for (int i = 0; i < 4; i++)
{
fscanf(pf, "%s %d %d %d", &u[i].name, &u[i].quantityOfStudents, &u[i].quantityOfFaculties, &u[i].quantityOfDepartments);
}
我在info.txt中有这样的信息:
KHNU 300 12 24
SHEVCHENKA 500 15 32
KPI 900 13 35
GORSKOGO 645 14 45
我只需要将这些信息写入结构数组,但作为新手我不明白该怎么做。这是代码:
void readFile(FILE* pf);
struct University
{
char name[30];
int quantityOfStudents;
int quantityOfFaculties;
int quantityOfDepartments;
};
int main()
{
FILE* pf = fopen("info.txt", "rb");
readFile(pf);
system("pause");
return 1;
}
void readFile(FILE* pf)
{
if ((pf == NULL)) { printf("Error!"); exit(1); }
struct University *u[4] = malloc(4 * sizeof(struct University));
for (int i = 0; i < 4; i++)
{
fscanf(pf, "%s %d %d %d", &u[i]->name, &u[i]->quantityOfStudents, &u[i]->quantityOfFaculties, &u[i]->quantityOfDepartments);
}
}
但是,正如您可能猜到的那样,它不会扫描。
请告诉我如何将信息从 .txt 扫描到结构数组的算法!
谢谢。
我认为您的代码存在一些编译问题。您应该能够在编译代码时找到它们。我尝试修复它们,并通过修复这些问题让您的代码正常工作:
malloc
returns 指向已分配内存的指针而不是指针数组。所以你的结构分配语句是这样的:
struct University *u[4] = malloc(4 * sizeof(struct University));
应该是这样的:
struct University *u = (struct University *)malloc(4 * sizeof(struct University));
- 当您将文件内容扫描到结构数组中时;您使用
u[i]
访问结构数组并使用->
获取结构元素。但是u[i]
解析为struct University
而不是struct University *
。我认为它应该看起来像这样:
for (int i = 0; i < 4; i++)
{
fscanf(pf, "%s %d %d %d", &u[i].name, &u[i].quantityOfStudents, &u[i].quantityOfFaculties, &u[i].quantityOfDepartments);
}