c - Confusion with Pointers Increment -
char *str = "string" ; char *end = str; while(*(end+1) != '\0') { end++; } while(str < end) { char temp = *str; *str = *end; *end = temp; str++; end--; }`
edit: both these*str = *end
, *str++ = *end
invalid?
the above code gives error @ line.
aren't str
, end
pointing read part in memory whether post increment?
char *str = "string" ;
is string literal placed in read-only data section.
in line:
*str = *end;
is trying modify string, segfault..
same *str++ = *end
, both invalid.
to make code work, change
char *str = "string";
to
char str[] = "string";
but note can not use *str++
because array names constant (not modifiable lvalue)
Comments
Post a Comment