C

时间:2016-02-02 14:33:02

标签: c arrays

在为数组赋值后,尝试使用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 }

1 个答案:

答案 0 :(得分:2)

C中的数组是从零开始的。

将您的索引从0运行到&lt; argc

for(c = 0; c < argc; ++c){

请勿使用<= argc - 1,因为如果argcunsigned类型,则会给您带来麻烦。

此外,在为其指定值之前,请不要回读数组中的值。这样做的行为在C中是未定义的。