当我转换并在同一个循环中打印时,我得到的结果加上我不知道它来自哪里的垃圾。 例如:
输入:
char array_ch[]={'A','B','C','D','E'};
int i=0;
for(i;array_ch[i]!='\0';i++){
array_ch[i]=array_ch[i]+32;
printf("%c",array_ch[i]);
}
输出:
abcde`H��A���/��u�$(!
如果我在另一个循环中打印它,那就ok:
输入:
char array_ch[]={'A','B','C','D','E'};
int i=0;
for(i;array_ch[i]!='\0';i++){
array_ch[i]=array_ch[i]+32;
}
for(i=0;array_ch[i]!='\0';i++){
printf("%c",array_ch[i]);
}
printf("\n");
输出:
abcde
答案 0 :(得分:5)
您有未定义的行为。问题是你的循环: 它寻找\ 0并且没有。因此,运气好的话,你会发现问题更糟糕,你认为运行正常,因为它看起来好像没问题,但这只是一个等待发生的问题。
所以写:char array_ch [] = {'A','B','C','D','E','\ 0'};你应该没事的
此致
答案 1 :(得分:4)
该数组不会以空值终止,如果您打算使用该循环,则应自行插入终结符
char array_ch[] = { 'A', 'B', 'C', 'D', 'E', '\0' };