char src[] = "hello world #"; is an automatic variable (char array) which is both read and write. char *other = "hello world #"; is a char * (which points to a string) of text allocated in the program's text (Data/BSS) area which is read only. On Mon, Feb 16, 2009 at 8:52 PM, Fundu <fundu_1999@xxxxxxxxx> wrote: > i'm trying to do pretty simple replacement using strtok. > but it looks like i have missed some subtle difference between the two following > > char src[] = "hello world #"; > char *other = "hello world #"; > > because if i use "char * other" with strtok it fails with bus error but i use src it works, don't understand what's the difference. > > here's the code for strtok. > char delims[] = "#"; > char *result = NULL; > // this works > result = strtok( src, delims ); > // this doesnot work and give a bus error > // result = strtok(other, delims); > while( result != NULL ) { > printf( "result is \"%s\"\n", result ); > result = strtok( NULL, delims ); > } > > what am i missing here ? i thought both way of declaration(mentioned above ) were the same apparently the r not, whats the diff ? > > any insight would be appreciated, TIA! > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- Bryan <>< -- To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html