2011-07-11 9 views
17

Cuando está imprimiendo un carácter de tabulación en la salida estándar usando printf en C, produce un espacio que aparentemente tiene 4 caracteres de longitud.printf t option

printf("\t"); 

¿Hay alguna manera de controlar el ancho de la pestaña en el caso anterior? Cualquier ayuda o sugerencia es apreciada.

Respuesta

18

Una pestaña es una pestaña. El número de espacios que consume es un problema de visualización y depende de la configuración de su caparazón.

Si desea controlar el ancho de sus datos, puede usar los sub-especificadores width en la cadena de formato printf. P.ej. :

printf("%5d", 2); 

No es una solución completa (si el valor es más de 5 caracteres, no se truncará), pero podría estar bien para sus necesidades.

Si desea un control completo, es probable que deba implementarlo usted mismo.

+3

En realidad, para cadenas de caracteres puede obtener el truncamiento: 'printf ("% 5.5s "," abcdefg ");' generará "abcde". Y si siempre quiere que la salida esté alineada a la izquierda para los casos en que la cadena tenga menos de 5 caracteres, use '"% -5.5s "' – proFromDover

+0

@proFromDover: si puede limitarse a cadenas, está bien, sí. –

43

Eso es algo controlado por su terminal, no por printf.

printf simplemente envía un \t a la secuencia de salida (que puede ser un tty, un archivo, etc.), no envía un número de espacios.

+2

+1, esta es una respuesta mucho más apropiada que la que se ha aceptado, en mi opinión. –