Printing next string in array of pointers to strings( char *arr[ ] ) in C -


why code doesn't print parasyte ? , how printing string works when use %s pointer of first char! , shouldn't give me error ?

 #include <stdio.h>      int main ()     {         char *anime[] = { "naruto", "parasyte" };         printf ("anime %s \n", anime[0] + 7);         return 0;     } 

edit: anime[0] + 7 undefined behavior because can't assure inside memory strings going adjacent. using anime[1] indeed right solution problem. see below comments of answer explanation.


because anime[0] + 6 points null-terminator instead of next string.

internally, anime array stored in memory:

n, a, r, u, t, o, \0, p, a, r, a, s, y, t, e, \0

so can see, there "invisible" null-terminator @ end of "naruto" string.

a workaround might add 7 instead of 6, point next string.

#include <stdio.h>  int main () {     char *anime[] = { "naruto", "parasyte" };     printf ("anime %s \n", anime[0] + 7);     return 0; } 

or else using anime[1] instead, way cleaner.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -