我正在尝试打印出数组中的元素:
#include <stdio.h>
int main(void) {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("%s", greeting[0]);
return 0;
}
我希望它打印出来H
,但它会崩溃并弹出Windows对话框:
“program.exe已停止工作”
我做错了什么?
答案 0 :(得分:2)
你应该写
printf("%c", greeting[1]);
写出单个字符('H'
)而不是尝试打印字符串。您的程序崩溃是因为%s
希望传递char*
参数,但greeting[1]
的类型为char
。
答案 1 :(得分:2)
尝试printf("%s", &greeting[1]);
它应该打印“ello”:
1)“greeting”是一个包含字符串“Hello \ 0”的字符数组。
2)您可以毫无问题地致电printf("%s\n", greeting);
。
3)“greeting [0]”是数组中的第一个字符。 “&amp; greeting [0]”是指向数组中第一个字符的指针。
printf("%s", s)
期望s是指针,而不是字符。
4)或者,你可能想要只打印一个角色。
在这种情况下,请尝试printf("%c", greeting[0]);
5)使用"%s"
打印字符串,使用"c%"
打印字符。使用"%d"
或"0x%02x"
打印字符的ASCII表示。
'希望有所帮助
答案 2 :(得分:1)
你应该这样做:
printf("%c \n", greeting[1]);
打印char的格式说明符是c
。所以要使用的格式字符串是%c
。