的意思 "." 在printf

use*_*975 8 c

我只是阅读经典的K&R并遇到以下语法:

printf("%.*s",max,s);
Run Code Online (Sandbox Code Playgroud)

"."这里的含义是什么?当我不在"."这里应用时,则会打印整个字符串,但是当我们不应用a时".",将打印最多的最大字符.如果有人能够解释这一点,我将非常感激.

Eri*_*hil 11

%.*s,.*限制将写入的字节数.如果这是用数字包括的,例如%.34s,那么数字将是限制.使用星号时,限制取自相应的参数printf.

选自C 2011(N1570)7.21.6.1 4,描述用于转换规范fprintf 等人:

一个可选的精度,它给出了为s转换写入的最大字节数.精度采用句点(.)的形式,后跟星号*(稍后描述)或可选的十进制整数; 如果仅指定了句点,则精度为零.


The*_*One 11

它指定"字符串最大字段宽度"

字符串格式中的精度指定最大字段宽度:

%2.6s

指定最小宽度为2,最大宽度为6个字符.如果字符串大于6个字符,则会被截断.