【问题标题】:Print char pointer char array with printf?用printf打印char指针char数组?
【发布时间】:2012-10-29 03:38:48
【问题描述】:

我正在尝试打印整个单词,而不仅仅是第一个字母。我可以用循环来做到这一点,但我认为有更好的方法。我四处搜索,看到他们将 %S 更改为 %c 的答案,但我已经在使用 %c,因为它是一个字符数组。

char* words[] = {"my", "word", "list"};
printf("The word: %c",*words[2]);

Results:
The word: l

【问题讨论】:

    标签: arrays pointers character printf


    【解决方案1】:

    问题是您取消引用了两次。 *words[2] 中的 [2] 从 words[] 取消引用到 "list" 然后 * 再次从 "list" 取消引用到 'l' 删除 * 和瞧。

    char* words[] = {"my", "word", "list"};
    printf("The word: %s", words[2]);
    

    【讨论】:

    • 啊,我知道了,我想知道取消引用,但如果我之前没有使用 %S 时我可能会读取小写字母,那么我会得到随机字符。谢谢你解决了。
    【解决方案2】:

    您需要使用 %s,这是一种专门用于以空字符结尾的字符数组(即 C 字符串)的格式。将数组的元素传递给printf 时,您不会取消对它的引用,如下所示:

    printf("The word: %s\n", words[2]);
    

    【讨论】:

    • 我一定是在搜索时读错了代码,我确实有 %S,但你可以看到我使用了大写字母。我得到了随机字符,我认为它是从地址中显示的,这就是我双重取消引用它的原因。删除它并将其更改为 s 现在一切正常。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多