介于';%之间的数字是什么';和格式说明符在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谢谢,很高兴它有帮助!:)