variable sintaxis pantalla lenguaje imprimir ejemplos dev datos como c formatting printf

sintaxis - printf y scanf en dev c++



Acolchado de tamaƱo variable en printf (4)

Podrías escribir así:

void foo(int paddingSize) { printf ("%*s",paddingSize,"MyText"); }

¿Hay alguna manera de tener un relleno de tamaño variable en printf ?

Tengo un entero que dice qué tan grande es el relleno:

void foo(int paddingSize) { printf("%...MyText", paddingSize); }

Esto debería imprimir ### MyText donde el tamaño del relleno debería decidir el número de símbolos ''#''.


Sí, si usa * en su cadena de formato, obtiene un número de los argumentos:

printf ("%0*d/n", 3, 5);

imprimirá "005".

Ten en cuenta que solo puedes rellenar con espacios o ceros. Si quieres rellenar con otra cosa, puedes usar algo como:

#include <stdio.h> #include <string.h> int main (void) { char *s = "MyText"; unsigned int sz = 9; char *pad = "########################################"; printf ("%.*s%s/n", (sz < strlen(s)) ? 0 : sz - strlen(s), pad, s); }

Esto genera ###MyText cuando sz es 9, o MyText cuando sz es 2 (sin relleno pero sin truncamiento). Es posible que desee agregar un cheque para el pad es demasiado corto.


Sin embargo, tenga cuidado, al menos algunos compiladores (y esto puede ser una cosa general de C) no siempre harán lo que usted quiere:

char *s = "four"; printf("%*.s/n", 5, s); // Note the "."

Esto imprime 5 espacios;

char *s = "four"; printf("%*s/n", 3, s); // Note no "."

Esto imprime los cuatro caracteres "cuatro"


printf( "%.*s", paddingSize, string );

Por ejemplo:

const char *string = "12345678901234567890"; printf( "5:%.*s/n", 5, string ); printf( "8:%.*s/n", 8, string ); printf( "25:%.*s/n", 25, string );

muestra:

5:12345 8:12345678 25:12345678901234567890