结构数组的动态值?

时间:2011-05-05 18:31:01

标签: c

typedef struct What_if

{

    char price[2];
} what_if ;

 what_if  *what_if_var;

int main(int argc,int argv[])

{
 int m= argv[1];

what_if_var[m]='\0'; 

format_input_records();

getch();

return 0;

}

int format_input_records()

{

        strcpy(what_if_var[0].price,"sss") ;

        printf("\ntrans_Indicator     ==== : : %s",what_if_var[0].price);

return 0;

} 

这里我需要动态值的结构数组大小?我怎样才能实现这个PLZ帮助我?

3 个答案:

答案 0 :(得分:1)

首先,你有一个问题,我认为你不明白指针是什么:

what_if  *what_if_var;
...
what_if_var[m]='\0'; 

你创建了一个指向What_if结构的指针,从不分配任何东西,然后尝试使用它(以及它们的数组)

您还没有main()

的正确签名
int main(int argc, char* argv[])

正如对您的问题的直接评论所指出的,这表明您确实不理解该语言的基础知识,并且介绍性书籍是有序的。

话虽这么说,你需要的是一个结构数组,其大小通过argv传递(在将它从char *转换为int之后),并且在结构内部你需要有一个char *指针。对于要存储的每个事物,您需要malloc()或使用strdup()然后将其分配给结构中的指针。

答案 1 :(得分:0)

您可以定义:

typedef struct What_if


     char *price;
} what_if;

在你的结构中。 当你知道要存储的字符的确切大小时,初始化它:

struct what_if w;
w.price = malloc (sizeof(char) * NEEDED_CHAR);

答案 2 :(得分:0)

您需要先分配what_if_var并致电malloc(),然后才能分配给what_if_var。我还建议你避免使用全局变量。而是将{{1}}置于本地。