奇怪的scanf论点

时间:2011-12-16 14:06:18

标签: c

这行代码会发生什么:

char Message[10];
scanf("%s%*",&Message,'?');

为什么它会读取两行然后它会igonre第二行?

当我使用

时,它给出了第一行作为输出
`printf("%s",Message)` 

1 个答案:

答案 0 :(得分:5)

请参阅scanf reference:类型的星号前缀(即“%* [type]”格式字符串,其中[type]是scanf类型说明符,例如d或{{1} })表示要忽略读取的值;所以 '?'参数实际上只是作为“占位符”,表示s将读取两个值。

问题(“%*”)中显示的格式字符串无效(缺少类型说明符),这意味着显示的调用将导致未定义的行为。