int main (){
char array[2] = {'hola', 'adios'};
int i = 0;
while (i<3){
printf("%c", array[i]);
i++;
}
return 0;
}
我不知道为什么输出是每个单词的最后一个字母,如下所示:as:)
它看起来像一个笑脸,wtf?
我只是想输出hola adios
答案 0 :(得分:4)
你需要字符串,而不是字符。 hola
是一个字符串,而不是char
。字符串位于""
中但不在''
中。所以你需要
const char* array[2] = { "hola", "adios" };
现在,这个数组有2个元素,所以循环遍历它们
while (i<2){ /* also NOTE: 2 elements in the array */
printf("%s", array[i]); /* note the "%s", it's not "%c" */
i++;
}
我会改用for
循环。
为什么没有编译时错误?请参阅What do single quotes do in C++ when used on multiple characters? - C
中的内容类似。
答案 1 :(得分:2)
您正在创建2个单个字符元素的数组。声明两个字符串的数组,并使用双引号来声明字符串,而不是字符:
char* array[2] = {"hola", "adios"};
此外,在printf
中,使用%s
打印字符串。 i
应在{0, 1}
范围内 - 不包括2
。
答案 2 :(得分:1)
char array[2] = {'hola', 'adios'};
这是无效的。您位于“未定义的行为”区域中。
您需要char**
或char[] []
并使用""
代替''
作为字符串。