c - 奇怪的 scanf 参数

标签 c

这行代码会发生什么:

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

为什么它读了两行然后就忽略了第二行?

当我使用时,它给我第一行作为输出

`printf("%s",Message)` 

最佳答案

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

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

关于c - 奇怪的 scanf 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8535315/

相关文章:

c - C 中预处理器语句的缩进

c - 从动态分配的二维数组中获取值

C变量在传递给函数后被设置为0

c - printf ("%s") 无法正常工作

c - 当 for 循环的条件部分有多个用逗号分隔的表达式时会发生什么?

c - 动态分配固定长度字符串的二维数组

c - 查找字符流中的第一个非重复字符

c - 如何在 C 中的 FUSE 中创建文件?

c++ - Arduino SHA1-HMAC 和 base64 编码与 Python 之间的对话问题

c - printf 的格式化