Consider the following C code snippet.
C
Output in GCC:
char* p = NULL;
printf("%s", p);
What should be the output of the above program?
The print expects a '\0' terminated array of characters (or string literal) whereas it receives a null pointer. Passing NULL to printf is undefined behavior.
According to Section 7.1.4(of C99 or C11) : Use of library functions
If an argument to a function has an invalid value (such as a value outside the domain of the function, or a pointer outside the address space of the program, or a null pointer, or a pointer to non-modifiable storage when the corresponding parameter is not const-qualified) or a type (after promotion) not expected by a function with variable number of arguments, the behavior is undefined.
Some compilers may produce null while others Segmentation Fault. GCC prints (null).// Effect of passing null pointers to ( %s )
// printf in C
#include <stdio.h>
int main()
{
char* p = NULL;
printf( "%s", p);
return 0;
}
(null)Note that the above program may cause undefined behavior as per C standard.