Remove %n format specifier and stop using the platform-dependent function binfmtl(). We want 32 bits here, not whatever sizeof(long) might be. Index: ExplicateUTF8.c --- ExplicateUTF8.c.orig +++ ExplicateUTF8.c @@ -87,7 +87,7 @@ main(int ac, char **av){ int UsefulBits; unsigned char c[6]; int i; - UTF32 ch; + UTF32 ch, mask; unsigned char *cptr; unsigned char ShiftedByte; char tempstr[33]; @@ -214,7 +214,10 @@ main(int ac, char **av){ printf("%s ",tempstr); } printf("\n"); - printf("This is padded to 32 places with %d zeros: %n%s\n",(32-GotBits),&spaces,binfmtl(ch)); + spaces = printf("This is padded to 32 places with %d zeros: ",(32-GotBits)); + for (mask = 1UL << 31; mask; mask >>= 1) + putchar(ch & mask ? '1' : '0'); + putchar('\n'); sprintf(tempstr," "); sprintf(tempstr,"%08lX",ch); tempstr[28] = tempstr[7];