[buug-l] glibc: snprintf

Michael Wiedmann mw at miwie.in-berlin.de
Don Sep 25 17:37:59 CEST 2003


Warum funktioniert der folgende Code nicht mit der glibc (2.2/2.3) unter Linux,
wohl aber unter Solaris und deren libc?

Michael
---

#include <stdio.h>

int main()
{
   char *p, buffer[10];
   int i;
   
   memset(buffer, 0x0, sizeof(buffer));
   p = buffer;

   /* 'snprintf' aus der 'glibc' ueberschreibt sich selbst
    * immer den Pointer 'p' (p[0]=0, gesehen in den Sourcen zu
    * glibc 2.3.x) und damit funktioniert das "Anhaengen" nicht.
    */
   for (i=0; i<5; i++)
      snprintf(p, sizeof(buffer), "%s%02d", p, i);

   printf("%s\n", buffer);
   
   return 0;
}

-- 
mw at miwie.in-berlin.de                              http://www.miwie.org
mw at miwie.org