Я пытаюсь написать код, чтобы изменить строку на месте (я просто пытаюсь улучшиться при программировании на С и манипуляции с указателем), но я не могу понять, почему я получаю ошибка сегментации:
#include <string.h>
void reverse(char *s);
int main() {
char* s = "teststring";
reverse(s);
return 0;
}
void reverse(char *s) {
int i, j;
char temp;
for (i=0,j = (strlen(s)-1); i < j; i++, j--) {
temp = *(s+i); //line 1
*(s+i) = *(s+j); //line 2
*(s+j) = temp; //line 3
}
}
Строки 2 и 3, вызывающие ошибку сегментации. Я понимаю, что могут быть лучшие способы сделать это, но мне интересно узнать, что именно в моем коде вызывает ошибку сегментации.
Обновление. Я включил функцию вызова в соответствии с запросом.