2012-11-08 63 views
4

我试图打印整个单词而不是第一个字母。我可以用循环做,但我认为有更好的方法。我四处搜寻,看到他们将%S更改为%c的答案,但我已经使用%c,因为它是一个字符数组。用printf打印char指针字符数组?

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

Results: 
The word: l 

回答

4

需要使用%s,专门为字符的空终止阵列(即C字符串)中使用的格式。你不取消引用数组的元素,当你把它传递给printf,像这样:

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

我必须读取错误的代码时,我做了我的搜索我没有%S,但你可以看到我用大写。我得到了随机字符,我认为它是从地址显示,这就是为什么我加倍去除它的原因。删除并改变它现在一切正常。谢谢。 – LF4

7

的问题是,你提领两次。 *单词[2]中的[2]从单词[]到列表的提领,然后*从“列表”再次解除引用到“l”删除*和瞧。

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

啊,我看到了,我想知道解引用,但如果我之前没有使用%S,我会随机获得字符。我可能已经将小写字母读作大写。谢谢你解决它。 – LF4