【发布时间】:2018-03-13 13:57:03
【问题描述】:
基本上我正在创建一个包含一些值的数组“字符串”,创建另一个数组(“辅助字符串”),然后以相反的顺序存储初始数组的所有值。最后我把它们打印出来。
当我按原样执行程序时,为什么会得到垃圾作为输出?但是,如果我在“字符串”数组中放入另一个数字(即:{3,1,1,3,4}),它可以正常工作(输出:43113)。
如果我添加这一行,它也可以正常工作:
"printf("%d\n", sizeof(auxstring));"
就在 for 循环之前。
我确信这是非常基本的东西,但我想了解幕后发生的事情,以及为什么在初始字符串的末尾添加一个数字,或者放置那个 printf,以某种方式输出准确的数字。
谢谢。
#include <stdio.h>
#include <string.h>
int main(void) {
int i=0, j, l;
char string[] = {3,1,1,3};
char auxstring[sizeof(string)];
for (j=(sizeof(auxstring) - 1); j >= auxstring[0]; j--) {
auxstring[j] = string[i];
i++;
}
for (l=0; l < sizeof(auxstring); l++) {
printf("%d",auxstring[l]);
}
return 0;
}
【问题讨论】:
-
条件应该是
j>=0而不是j >= auxstring[0]。 -
%d 需要整数,你给它一个字符(更少的字节)
-
@drilow
char将被提升为int,所以没关系。 -
auxstring在for循环的测试部分中使用未初始化。
标签: c arrays for-loop reverse sizeof