warning: flag `0' used with type `s'
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" #include "stdlib.h" #include "string.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] -- +---------+-------------------------------+ | | Martin Llanos | + -o) + Av. Corrientes 2063 6to "80" + | /\\ | C1045AAC - Bs.As <http://Bs.As>. - Argentina | + _\_V + martinllanos@gmail.com + | | Tel: +54 11-4954-3334 | +---------+-------------------------------+
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.
On Fri, 2005-07-08 at 17:28 -0300, Martin Llanos wrote:
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" #include "stdlib.h" #include "string.h"
int main() { char szValor[44]; sprintf(szValor, "34"); printf("szValor:[%05s]\n", szValor); return (0); }
That won't do what you want.... try this int main() { char szValor[44]; sprintf(szValor, "%05d",34); printf("szValor:[%s]\n", szValor); return (0); } or even int main() { int szValor; szValor = 34; printf("szValor:[%05d]\n", szValor); return (0); } You need to specify the number of digits when you convert the integer 34 into a string. You can't add zeros to the start of a string using "%05s". Peter
participants (3)
-
Martin Llanos
-
Peter Onion
-
Sebastian Ferro