printfThe printf family of functions do no checking of their arguments.
#include <stdio.h>
#include <stdlib.h>
int main( void ) {
const char conference[] = "OSCON";
const int year = 2009;
printf( "Hello, %s %d!\n", conference, year );
printf( "Hello, %s %d!\n", year, conference );
return 0;
}
Compiling this with -Wall gives ample warnings of our mistake:
$ make gcc -Wall -pedantic hello-printf.c -o hello-printf hello-printf.c: In function 'main': hello-printf.c:10: warning: format '%s' expects type 'char *', but argument 2 has type 'int' hello-printf.c:10: warning: format '%d' expects type 'int', but argument 3 has type 'const char *'
However, those are just warnings, and gcc still creates an executable.
Running it is tragic.
$ ./hello-printf Hello, OSCON 2009! Bus errorTOC | Prev | Next