【问题标题】:Why this code prints single characters instead of the word?为什么此代码打印单个字符而不是单词?
【发布时间】:2020-05-24 19:12:50
【问题描述】:
char em[] = {'no','yes','maybe','kinda','btw'};
for (int k = 0;k<2;k++){
    printf("%c", em[rand()%5+1]);
}

此代码应在输出"no""yes""maybe""kinda""btw" 中打印。但是当我运行它时,它会打印一个字符,例如'o''k' ecc...为什么?

【问题讨论】:

  • 多字符常量...而您只使用"%c"打印一个
  • 开始,例如'no'"no"... 单引号与双引号。请多花点时间阅读您的课本。
  • em[rand()%5+1] 也超出范围。应该是em[rand()%5]。您可以访问索引为04 的5 元素数组,而不是索引15
  • 检查警告通常是一种很好的反应

标签: c arrays for-loop


【解决方案1】:

您已将 em 声明为一个字符数组,但您在其定义中却拥有类似于 Python 样式的字符串。

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

你想要的是

char *em[] = {"no","yes","maybe","kinda","btw"};

这将使em 成为一个字符指针数组。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 2019-08-02
    • 2014-06-08
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多