[C con Clase] formatear cadenas con sprintf o printf

Mariano Demarchi marchi.hh en gmail.com
Jue Jun 18 02:52:49 CEST 2009


Hola Fernando, por lo que se, printf es bastante flexible a la hora de
presentar texto, de todas maneras no se puede utilizar como si de un
procesador de textos se tratase, esperando que se pueda alinear una cadena
al centro o algo por el estilo.
Te dejo un ejemplo de como podrias hacer lo que pedis (aunque no se
exactamente de que forma lo queres):
int main ()
{
 int i;
 char nombres[6][25] = {"LECHE ALPURA DESLACTOSA","HUEVO BLANCO","FLOR DE
XALAPA DE CAJA","NUTRI LECHE","LECHE ALPURA SEMI","LALA ENTERA"};
 float cant[6] = {32654.0,183.0,3625.0,2365.0,854.0,98.0};
 char unidad[6][3] = {"PZ","KG","PZ","PZ","PZ","PZ"};
 float punit[6] = {11.83,18324.96,7.33,8.92,11.42,11.67};


 for(i=0;i<6;i++)
  printf("%7.1f\t%s\t%25s\t%.1f\n",cant[i],unidad[i],nombres[i],punit[i]);
  return 0;
}
%7.1f
Esto escribe un flotante con 1 digito despues del punto y 6 caracteres
delante del punto. Estos seran o bien los digitos o en caso de tener menos
de 6 digitos, seran espacios (hubicados delante de los digitos).
"%25s"
Esto escribe una cadena de texto precedida por tanto espacios como su
longitud restada de 20 en caso de tener mas de 20 caracteres, se comporta
como "%s".
El formato general es de la siguiente forma
"%[parametro][flags][ancho][.precision][longitud]tipo"
Los que estan entre [] son opcionales.
precision suele ser un numero entero (aunque hay otra posibilidad, *), que
indica la cantidad digitos "despues de la coma" para numero flotantes o la
cantidad caracteres que deben escribirse en el caso de cadenas.
ancho es para rellenar a una cierta cantidad de caracteres usandose por
defecto el espacio vacio.
Para conocer mejor el formato de printf(),
http://www.opengroup.org/onlinepubs/9699919799/functions/printf.html
Saludos
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090617/b34dc8c5/attachment.html>


Más información sobre la lista de distribución Cconclase