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帮助我?
答案 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}}置于本地。