Я нашел следующее решение в C для обращения строки:
#include <stdio.h>
void reverse(char * head);
void main() {
char * s = "sample text";
reverse(s);
printf("%s", s);
}
void reverse(char * head) {
char * end = head;
char tmp;
if (!head || !(*head)) return;
while(*end) ++end;
--end;
while (head < end) {
tmp = *head;
*head++ = *end;
*end-- = tmp;
}
}
Однако мое решение - это segfaulting. По данным GDB, следующая строка:
*head++ = *end;
Строка segfaults на первой итерации цикла while. конец указывает на последний символ строки "t", а заголовок указывает на начало строки. Так почему же это не работает?