试图动态分配空间的结构,填充w/Data,并分配指针的结构



我需要从给定格式的文本文件中获取信息:

姓,名

街道地址

城市、州

邮政编码


姓,名

街道地址

城市、州

邮政编码

等等……

我假设我不知道条目的数量,所以显然我必须动态分配空间。我还需要使用指针数组来指向每个结构体。目前,我只关心使用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++;

?

相关内容

  • 没有找到相关文章

最新更新