Контекст
Я изучаю C и пытаюсь перевернуть строку с помощью указателей. (Я знаю, что вы можете использовать массив; это больше об указателях.)
Проблема
Я продолжаю получать ошибки сегментации при попытке запустить приведенный ниже код. GCC, похоже, не нравится строка *end = *begin;
. Почему?
Тем более, что мой код почти идентичен незлой функции C, уже обсужденной в другом вопросе
#include <stdio.h>
#include <string.h>
void my_strrev(char* begin){
char temp;
char* end;
end = begin + strlen(begin) - 1;
while(end>begin){
temp = *end;
*end = *begin;
*begin = temp;
end--;
begin++;
}
}
main(){
char *string = "foobar";
my_strrev(string);
printf("%s", string);
}