这行代码会发生什么:
char Message[10];
scanf("%s%*",&Message,'?');
为什么它读了两行然后就忽略了第二行?
当我使用时,它给我第一行作为输出
`printf("%s",Message)`
最佳答案
参见scanf reference :类型的星号前缀(即“%*[type]”格式字符串,其中 [type] 是 scanf 类型说明符,例如 d
或 s
)读取的值将被忽略;所以 '?'参数实际上只是作为“占位符”,指示 scanf
将读取两个值。
但是,问题中显示的格式字符串(“%*”)无效(缺少类型说明符),这意味着显示的调用将导致未定义的行为。
关于c - 奇怪的 scanf 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8535315/