C 为什么此代码打印单个字符而不是单词?

C 为什么此代码打印单个字符而不是单词?,c,arrays,for-loop,C,Arrays,For Loop,这段代码应该在输出中打印否,是的,可能,有点或顺便说一句。但当我运行它时,它会打印一个字符,例如“o”或“k”ecc。。。为什么?您已经将em声明为一个字符数组,但在其定义中却得到了类似Python风格的字符串 在C语言中,字符串需要双引号。单引号仅用于单个字符 你想要的是 char em[] = {'no','yes','maybe','kinda','btw'}; for (int k = 0;k<2;k++){ printf("%c", em[rand()%5+1]); }

这段代码应该在输出中打印否,是的,可能,有点或顺便说一句。但当我运行它时,它会打印一个字符,例如“o”或“k”ecc。。。为什么?

您已经将em声明为一个字符数组,但在其定义中却得到了类似Python风格的字符串

在C语言中,字符串需要双引号。单引号仅用于单个字符

你想要的是

char em[] = {'no','yes','maybe','kinda','btw'};
for (int k = 0;k<2;k++){
    printf("%c", em[rand()%5+1]);
}
这将使em成为一个字符指针数组


最后,您需要使用%s而不是%c来打印字符串。

多字符常量。。。并且您仅打印一个以%cTo开头的文件,例如“否”与“否”。。。单引号对双引号。请多花点时间阅读您的课本。em[rand%5+1]也超出范围。它应该是em[兰特%5]。您可以访问索引为0到4的5元素数组,而不是索引为1到5的数组。检查警告通常是一个很好的选择
char *em[] = {"no","yes","maybe","kinda","btw"};