我需要以给定格式从文本文件中获取信息:
姓氏,名字
街道地址
city,state
邮政编码
姓氏,名字
街道地址
city,state
邮政编码
等...
我假设我不知道条目的数量,所以显然我将不得不动态分配空间。我还需要使用一个指针数组来指向每个结构。目前,我只关心使用malloc分配空间,为结构赋值,将ptr分配给结构,然后输出给定的信息。我将使用IO重定向从txt文件中获取数据(我知道该怎么做)。
我得到的错误位于底部的printf()上(错误:请求成员'name',而不是结构或联合),但我怀疑我的代码有更多错误
感谢帮助。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct addressBook{
char name [50];
char streetAddress [50];
char cityAndState [25];
int zip;
};
int main(){
int *ptr[50];
int i, k;
unsigned ptrCount = 0;
for (i = 0; i != EOF; i++){
struct addressBook *newAddress = malloc(sizeof(struct addressBook));
gets(newAddress->name);
gets(newAddress->streetAddress);
gets(newAddress->cityAndState);
scanf("%d", &newAddress->zip);
for (k = 0; k < 50; k++){
*ptr[k] = &newAddress;
ptrCount++;
}
}
putchar('\n');
int z;
for (z = 0; z < ptrCount; z++){
printf("%s \n%s \n%s %d\n", *ptr[z].name, *ptr[z].streetAddress, *ptr[z].cityAndState, *ptr[z].zip);
}
}
答案 0 :(得分:1)
您的ptr数组被声明为指向整数的指针数组。我认为你的意思是将它声明为一个addressBook指针数组:
struct addressBook * ptr[50];
然后你可以像这样分配值:
ptr[k] = newAddress;
并按照以下方式打印:
printf("%s \n%s \n%s %d\n", ptr[z]->name, ptr[z]->streetAddress, ptr[z]->cityAndState, ptr[z]->zip);
对于我来说,有一个循环将每个新分配的addressBook对象分配给ptr数组中的50个指针中的每一个,这对我来说并没有多大意义。也许不是
for (k = 0; k < 50; k++){
*ptr[k] = &newAddress;
ptrCount++;
}
循环部分,你只想做一个简单的事情:
ptr[ptrCount] = newAddress;
ptrCount++;