Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
介于';%之间的数字是什么';和格式说明符在scanf中的含义?_C_Scanf - Fatal编程技术网

介于';%之间的数字是什么';和格式说明符在scanf中的含义?

介于';%之间的数字是什么';和格式说明符在scanf中的含义?,c,scanf,C,Scanf,我知道printf()的格式说明符中使用的选项,但我完全不知道%3d之类的东西可能意味着什么,如下代码所示 scanf("%3d %3d",&num1,&num2); 一般来说,%和格式说明符之间的数字在scanf语句中表示什么 scanf()不是简单地接收输入并将其存储在参数中指定的地址中吗?您需要查看 基本上,%和转换说明符之间的数字表示最大字段宽度。处理指定数量的字符后,转换将停止 这可以方便地将一系列数字“分割”为多个单独的数字,如下所示: const char *da

我知道
printf()
的格式说明符中使用的选项,但我完全不知道
%3d
之类的东西可能意味着什么,如下代码所示

scanf("%3d %3d",&num1,&num2);
一般来说,
%
格式说明符
之间的数字在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);
请注意,格式字符串中的空格与输入中的任何空格序列(包括无空格)匹配,因此即使输入字符串(
date
)不包含任何空格,上述操作仍然有效。在格式字符串中使用空格有助于提高可读性


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

要打印的最小字符数。如果要打印的值小于此数字,则结果将用空格填充。即使结果更大,该值也不会被截断。感谢您给出的答案。我可以使用此方法对从
stdin
(键盘)收到的数字进行切片吗?@tsigh谢谢,很高兴它有帮助!:)