我需要从给定格式的文本文件中获取信息:
姓,名
街道地址
城市、州
邮政编码
姓,名
街道地址
城市、州
邮政编码
等等……
我假设我不知道条目的数量,所以显然我必须动态分配空间。我还需要使用指针数组来指向每个结构体。目前,我只关心使用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 %dn", *ptr[z].name, *ptr[z].streetAddress, *ptr[z].cityAndState, *ptr[z].zip);
}
}
您的ptr数组被声明为指向整数的指针数组。我想你的意思是声明它作为一个数组的地址本指针代替:
struct addressBook * ptr[50];
,然后像这样赋值:
ptr[k] = newAddress;
并像这样打印:
printf("%s n%s n%s %dn", 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++;
?