首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用%3d时的意外输出(扫描f()中的最大字段宽度说明符)

使用%3d时的意外输出(扫描f()中的最大字段宽度说明符)
EN

Stack Overflow用户
提问于 2017-10-04 18:26:17
回答 1查看 140关注 0票数 0

源代码:

代码语言:javascript
复制
#include <stdio.h>
main()
{
    int a,b,c;
    printf("Enter: ");
    scanf("%3d %3d %3d",&a,&b,&c);
    printf("%d",b);
}

输出:

代码语言:javascript
复制
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中,不是吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-04 18:40:11

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

所以输入"1234␣567␣8",a消耗123;b消耗4并由于␣停止;然后c消耗567。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46571743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档