Lenguaje C: especificador de formato precedido por modificador

        En lenguaje C, se pueden agregar algunos modificadores delante del especificador de formato para controlar el formato de la salida o entrada, incluyendo principalmente ancho, precisión, indicador de justificación a la izquierda y carácter de relleno de prefijo, etc.

 1. Ancho


        % [ancho] tipo: ancho aquí es un número entero no negativo, que indica el ancho mínimo del campo de salida. Si el número real de dígitos de datos es menor que el ancho especificado, se agregarán espacios o ceros (dependiendo de los caracteres de relleno) a la izquierda para alcanzar el ancho especificado.

printf("%10d", 5);

//将输出“      5”,其中“5”前面有7个空格。


 2. Precisión


        %.precision[tipo]: para números de punto flotante, .precision especifica el número de dígitos después del punto decimal; para cadenas, representa el número máximo de caracteres de salida y se truncará si se excede.

printf("%.2f", 3.14159);

//将输出“3.14”。


 3. Marca de justificación a la izquierda (justificación a la izquierda)


         - se utiliza para indicar la alineación a la izquierda, es decir, cuando se cumplen los requisitos de ancho, los datos se muestran a la izquierda y la parte insuficiente se llena con caracteres de relleno en el lado derecho.

printf("%-10d", 5);

//将输出“5      ”,其中“5”后面有7个空格。


 4. Carácter de relleno de prefijo


 • De forma predeterminada, los espacios se utilizan como caracteres de relleno cuando se requiere relleno. El relleno con 0 se puede especificar insertando 0 entre el ancho y el signo.

printf("%010d", 5);

//将输出“0000000005”,左侧用0填充至10位。

5. * En la cadena de formato de las funciones de la serie printf o scanf, de hecho se puede usar para obtener el valor de ancho o precisión de la lista de parámetros.

        Específicamente, el% en la cadena de formato va seguido de un asterisco * y otro número. Este asterisco no especifica directamente el ancho o la precisión, pero indica que el valor real debe obtenerse de la lista de parámetros correspondiente.

 1. 宽度:

宽度由参数动态决定

int width = 10;
printf("%*d", width, some_integer_value); // 这里宽度(field width)由变量width提供

上述代码将打印出一个整数,其左对齐且至少占据10个字符宽度,不足部分用空格填充。

 2. 精度:

对于浮点数或者字符串(%s)也有类似的情况,但通常用于浮点数的精度控制:

int precision = 3;
float value = 3.14159265;
printf("%.3f", value); // 静态指定小数点后3位精度
printf("%.*f", precision, value); // 动态指定小数点后的精度由变量precision提供

在第二个 printf 调用中,.* 表示浮点数的精度由 precision 变量提供的值来确定。

通过这种方式,在运行时根据需要调整输出格式的宽度或精度,而无需硬编码到格式化字符串中。

 

Supongo que te gusta

Origin blog.csdn.net/W_Fe5/article/details/135337477
Recomendado
Clasificación