我使用过代码。
char *y;
y="hello world";
printf("%c",y);
它只显示一些无用的东西。 我犯了什么错误。
答案 0 :(得分:4)
更改:
printf("%c",y);
到:
printf("%s",y);
由于%c
说明符表示char
。要识别字符串,您需要使用说明符%s
。
答案 1 :(得分:1)
要打印c-string,请使用%s
中的printf
格式说明符。现在发生的事情是y
评估某个地址,然后您尝试使用导致UB的%c
打印该地址。
答案 2 :(得分:1)
它是undefined behaviour
,因为您使用了错误的格式说明符。
C11标准:§7.21.6.1: 第9段:
如果转换规范无效,则行为为 undefined.225)如果任何参数不是正确的类型 相应的转换规范,行为未定义。
因此,请使用%s
代替%c
作为字符串。