在为数组赋值后,尝试使用for循环打印其内容。输出的前几个值不是分配给数组的值。
输入:-r 45 23 32 43 53 ed //这些是分配给数组的内容
输出: - ▒▒4523 32 43 53 ed //我觉得这是我的第一个值。
随着数组大小的增加,显示的值越多(▒▒)。 我如何解决这个问题,以便输出与输入相同?
用于打印的代码如下:
char **values = malloc(argc*sizeof(char));
for(c=1;c<=argc;c++){
printf("test value:%s\n",values[c]); // values contains the value
}
答案 0 :(得分:2)
C
中的数组是从零开始的。
将您的索引从0
运行到&lt; argc
:
for(c = 0; c < argc; ++c){
请勿使用<= argc - 1
,因为如果argc
为unsigned
类型,则会给您带来麻烦。
此外,在为其指定值之前,请不要回读数组中的值。这样做的行为在C中是未定义的。