2005/7/8, Martin Llanos <martinllanos@gmail.com>:
I have a problem when compiling with GCC - Linux I obtain result ==> szValor:[ 34] (GCC 2.95 > - Linux) when I want to obtain ==> szValor:[00034] (xlC - AIX & MSVC) An example detail : ==============
1) SOURCE: #include "stdio.h"
int main() { char szValor[44]; sprintf(szValor, "34"); printf("szValor:[%05s]\n", szValor); return (0); }
2) COMPILACION: gcc -Wall prueba.c -o prueba
3) MENSAJE WARNING: prueba.c:7: warning: flag `0' used with type `s'
SFV52@sfctrl:/sfctrl> prueba
4) EJECUCION REAL: szValor:[ 34]
5) EJECUCION ESPERADA: szValor:[00034]
Seguramente estas acostumbrado a programar en algun Solaris. He probado el codigo en un SuSE 9.2 y en un Solaris 9. En Solaris 9 imprime szValor:[00034] y en linux imprime: szValor:[ 34] Por qué? Me imagino porque el "%05s" (rellenar con 0 a la izquierda) no está documentada en ningun lado. Tal vez lo que hicieron el compilador de Solaris, le pusieron esta característica que no esta definida en el ANSI C.