c - 使用 %3d(scanf() 中的最大字段宽度说明符)时出现意外输出

标签 c scanf

源代码:

#include <stdio.h>
main()
{
    int a,b,c;
    printf("Enter: ");
    scanf("%3d %3d %3d",&a,&b,&c);
    printf("%d",b);
}

输出:

Enter: 1234 5678 9
4
--------------------------------
Process exited after 7.322 seconds with return value 1
Press any key to continue . . .

当我在这里使用 scanf("%3d %3d %3d",&a,&b,&c); 时,为什么 b 得到的值是 4 而不是 456?

使用 %3d %3d %3d 应提取(三次)三个连续的非空白字符并将它们放入变量 abc 分别,不是吗?

最佳答案

正如 @SouravGosh 指出的 %nd,其中 n 是数字格式,指定作为该字段的一部分读取的最大字符数。

所以输入“1234␣567␣8”,a消耗123; b 消耗了 4 并且因为␣而停止;然后c消耗了567。

关于c - 使用 %3d(scanf() 中的最大字段宽度说明符)时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571743/

相关文章:

C 中基于控制台的应用程序,需要表格格式化程序

c - 在 Cygwin 或 MinGW 中将 CMake 与 AVR 工具链结合使用

在 C 中压缩和加密字节数组

c - 为什么 scanf 扫描空值

matlab - Matlab中如何判断输入是比率还是 float ?

c - 段错误 : 11 on c program

c - 如何修复 ".c:6: undefined reference to ' printf'

c - 如何知道用户是否在一分钟后没有在C中输入内容

c - scanf 将 "junk"值赋给变量

c - 如何在特定时间打印内存中的所有共享对象?