这行代码会发生什么:
char Message[10];
scanf("%s%*",&Message,'?');
为什么它会读取两行然后它会igonre第二行?
当我使用
时,它给出了第一行作为输出`printf("%s",Message)`
答案 0 :(得分:5)
请参阅scanf reference:类型的星号前缀(即“%* [type]”格式字符串,其中[type]是scanf类型说明符,例如d
或{{1} })表示要忽略读取的值;所以 '?'参数实际上只是作为“占位符”,表示s
将读取两个值。
问题(“%*”)中显示的格式字符串无效(缺少类型说明符),这意味着显示的调用将导致未定义的行为。