Guía de seguimiento dinámico de Solaris

Especificadores de precisión y anchura

El ancho mínimo de campo puede especificarse en forma de cadena de dígitos decimales después de cualquier especificador de indicador, en cuyo caso el ancho de campo se establecerá en el número especificado de columnas. El ancho de campo también puede especificarse en forma de asterisco (*), en cuyo caso se accede al argumento adicional del tipo int para determinar el ancho de campo. Por ejemplo, para imprimir un entero x en un ancho de campo determinado por el valor de la variable int w, debe escribir la siguiente instrucción de D:

printf("%*d", w, x);

El ancho de campo también puede especificarse mediante el carácter ? para indicar que el ancho debe establecerse en función del número de caracteres necesarios para dar formato a una dirección con valores hexadecimales en el modelo de datos del núcleo del sistema operativo. El ancho se establece en 8 si el núcleo está utilizando un modelo de datos de 32 bits o en 16 si está utilizando un modelo de datos de 64 bits.

La precisión de la conversión puede especificarse en forma de cadena de dígitos decimales después de un punto (.) o en forma de asterisco ( *) después de un punto. Si se utiliza un asterisco para especificar la precisión, se accede a un argumento adicional del tipo int antes del argumento de conversión para determinar la precisión. Si se especifica tanto el ancho como la precisión en forma de asteriscos, los argumentos de printf() para la conversión deberían aparecer en el siguiente orden: ancho, precisión y valor.