使用printf打印字符指针和字符数组?

5
我想输出整个单词而不是仅仅第一个字母。我可以使用循环来实现,但我觉得应该有更好的方法。我搜索了一下,看到了一些回答,他们将%S改为%c,但是我已经在使用%c,因为这是一个字符数组。
char* words[] = {"my", "word", "list"};
printf("The word: %c",*words[2]);

Results:
The word: l
2个回答

9
问题在于您进行了两次解引用。*words [2] 中的 [2] 从 words [] 解引用到“list”,然后第二个 * 从“list”解引用到'l'。去掉 * 即可。
char* words[] = {"my", "word", "list"};
printf("The word: %s", words[2]);

啊,我明白了。我之前对于解除引用有些疑惑,但是如果我在使用%S时没有解除引用,我会得到一些随机字符。可能是我把小写字母看成了大写字母。谢谢你,问题已经解决了。 - krizzo

4

您需要使用%s,这是一种专门用于以空字符结尾的字符数组(即C字符串)的格式。当您将其传递给printf时,不要对数组元素进行解引用,就像这样:

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

当我进行搜索时,我一定是读错了代码,我本来有%S,但是你可以看到我使用了大写字母。我得到了随机字符,我认为它是从地址中显示出来的,所以我进行了双重引用。现在我已经将其更改为s并删除了它,现在一切都正常了。谢谢。 - krizzo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接