繁体   English   中英

scanf中'%'和格式说明符之间的数字是什么意思?

[英]What does a number between '%' and format specifier mean in scanf ?

我知道printf()格式说明符中使用的选项,但是对于%3d含义我完全一无所知,如下面的代码所示。

scanf("%3d %3d",&num1,&num2);

通常, %format specifier之间的数字在scanf语句中表示什么。

scanf()并非仅意味着接收输入并将其存储在参数中指定的地址中吗?

您需要查看详细的文档

基本上, %和转换说明符之间的数字表示最大字段宽度。 在处理了指定数量的字符后,转换将停止。

这样可以很方便地将数字序列“分割”为多个单独的数字,如下所示:

const char *date = "20130426";
int year, month, day;

if(sscanf(date, "%4d %2d %2d", &year, &month, &day) == 3)
  print("the date is %4d-%02d-%02d\n", year, month, day);

请注意,格式字符串中的空格匹配输入中的任何空格序列(包括none ),因此即使输入字符串( date )不包含任何空格,上述方法也可以工作。 在格式字符串中使用空格有助于使其更具可读性。

响应您的stdin注释, sscanf()函数不知道(或不在乎)其操作的字符串来自何处,它只是一个字符串。 所以是的,您可以调用从stdin读取的数据,从文件读取的数据,在程序中其他地方动态创建的数据,通过网络接收的数据或任何其他方式调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM