用于存储邮政编码的结构

时间:2015-11-26 01:51:39

标签: c struct

它要求我创建一个哈希函数,通过对其字符求和将邮政编码转换为整数。这是我的代码。我还没有哈希函数。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>
typedef struct PostalCode
{ 
    int size;
    char *array[6];
} PostalCode;

int main()
{ 
int size = 6, i;
PostalCode *h = malloc(sizeof(PostalCode));
h->size = size; 
h->array = malloc(sizeof(char)*size);

printf("Please enter your postal code: \n"); 

for (i=0; i<6; i++) 
    scanf(" %c", &(h->array[i]));
}

我现在得到的错误是:postalcode.c:9:11:错误:使用数组类型赋值给表达式         h-&gt; array = malloc(sizeof(char)* size);

1 个答案:

答案 0 :(得分:1)

该行

  char *array[6]

声明一个由6个指向char的数组,这不是你想要的。你可以做到这一点

char * array

并以这种方式解决错误,或遵循chux的建议,即

char array[6]

在这种情况下,您不需要导致错误的行,只需将其删除即可。无需动态分配数组。

其他一些建议:

如果您的邮政编码总是6个字符,那么您并非如此 需要PostalCode结构,除非你计划保留其他一些 有关邮政编码的信息。你可以做到

typedef char PostalCode[6];

当然,如果您希望邮政编码有 变长,然后大小可能会有所帮助。

无论你是想要一个struct还是typedef一个char数组,硬编码值6都是个坏主意。如果它总是6个字符,那么你可以#define它;或者如果你保持结构中的大小,那么请确保你初始化它并使用结构成员而不是文字数字6.

此处无需动态分配内存,但如果您确实要释放它。

祝你好运!