C упражнение на обратную струну
Привет.У меня есть упражнение на Си для практики в университете.
Итак, пользователь дает строку, и я должен ее отменить,но у меня есть небольшая проблема.
Я заметил, что когда длина строки нечетное число,программа завершается успешно, но когда четное, я получаю "ошибка сегментации (ядро сбрасывается)"
и я знаю,почему это происходит, но я не могу найти способ выяснить это.
Код ниже:
Что я уже пробовал:
#include <stdio.h> char *string_end(char *str); void string_reverse(char *str); int main() { char string[30]; printf("Give a string and I will reverse it: "); scanf("%s" , string); printf("Your string: %s\n\n" , string); printf("The reversed string: \n"); string_reverse(string); return 0; } char *string_end(char *str) { while(1) { if(*str == '\0') { str = --str; //printf("Here->%c|%p\n",*str,str); break; } printf("%c|%p\n",*str,str); str++; } //printf("\n\n\n"); return str; } void string_reverse(char *str) { //printf("%c|%p\n\n",*str,str); char *start = str; char temp; char *end = string_end(str); //printf("%c|%p\n",*end,end); //printf("%c|%p\n",*start,start); do { temp = *start; *start = *end; *end = temp; } while(start++ != end--); printf("\n%s\n" , str); }
Заранее спасибо :)