Can anybody please explain me the output of following code
char *str="ABCDE" ;
printf(str,"%s \\n ");
printf("%s\\n",str);
O/P-
ABCDEABCDE\n
thanx in advance
Can anybody please explain me the output of following code
char *str="ABCDE" ;
printf(str,"%s \\n ");
printf("%s\\n",str);
O/P-
ABCDEABCDE\n
thanx in advance
Well, the printf(str,"%s \n ");
is wrong since if you want to print out to a string you should use sprintf()
also declared in stdio.h
. Anyway, writing to a pointer that points to Data segment would result to Segmentation fault most likely, since no space is reserved for the str
… This would be right
char str[MAX_STRING], *str2 = "world";
sprintf(str,"Hello %s\n", str2);
printf(str)
give you “Hello world”.
Anyway, more on printf()
, sprintf()
, fprintf()
can be found on http://en.cppreference.com/w/cpp/io/c/fprintf
Kindest regards,
Petar Vukmirovic
The first printf -
printf(str,"%s \\n ");
has first argument as str which does not contain any format specifier (like “%d”, “%s” etc.), so the second argument is simply discard. Hence contents of str are printed i.e ABCDE
-[1]
In second printf -
printf("%s\\n",str);
there is “%s” specifier, hence the second argument (str) is printed. - [2]
Notice there are double slashes before n, hence the first slash escapes the second slash, hence “\n” is printed at the end. -[3]
Combining [1], [2] and [3] we get the output - ABCDEABCDE\n