Passing NULL to printf in C
Consider the following C code snippet.
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).
#include <stdio.h>
int main()
{
char * p = NULL;
printf ( "%s" , p);
return 0;
}
|
Output in GCC:
(null)
Note that the above program may cause undefined behavior as per C standard.
Last Updated :
02 Jun, 2017
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...