Im пытается изменить строку на месте.Обратный строки в c
void reverseStr(char *str)
{
int i;
int length;
int last_pos;
length = strlen(str);
last_pos = length-1;
for(i = 0; i < length/2; i++)
{
char tmp = str[i];
str[i] = str[last_pos - i];
str[last_pos - i] = tmp;
}
}
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400893 in reverseStr (str=0x400974 "Haus") at main.c:102
102 str[i] = str[last_pos - i];
(gdb) print i
$1 = 0
(gdb) print last_pos
$2 = 3
(gdb) print str
$3 = 0x400974 "Haus"
(gdb) print str[3]
$4 = 115 's'
Благодарим за понимание. Я не понимаю, как эта инструкция может вызвать ошибку? С уважением :)
этот вопрос был задан много раз уже: http://stackoverflow.com/questions/11538381/reverse-strings-in-c –
@cacho: Этот вопрос касается совершенно иной проблемы (с кодом, просто бывает, что хочет выполнить ту же задачу, но по-другому). Код другого вопроса не реверсируется на месте, ошибка отличается ... в основном, решение, данное здесь, совершенно не имеет значения. – cHao
Правда, но моя проблема была строковым литералом, я не мог найти это с вашей ссылкой. – Zackline