Я новичок в c и попытался написать простую функцию обратного преобразования.ошибка шины: 10 при попытке изменить строку в c
Вот мой код, который я получил в Интернете, составленный в порядке, но поднять «ошибка шины: 10» при запуске (пожалуйста, игнорировать так много Printf, я пытался выяснить, каждый шаг с ними)
#include <stdlib.h>
#include <stdio.h>
char *str_reverse(char *begin, char *end) {
char *res;
char temp;
char temp2;
res = begin;
printf("str %s %s\n", begin,end);
printf("res add %p begin add %p, end add %p\n", res, begin, end);
while (end > begin) {
printf("start\n");
temp = *end;
printf("temp %c\n",temp);
*end = *begin;
printf("end addr %p\n",end);
end--;
*begin = temp;
printf("result %s\n", res);
begin++;
}
printf("result %s\n", res);
return res;
}
int main() {
char *begin = "abc";
char *end;
end= begin + 2;
char *new = str_reverse(begin, end);
printf("value %s\n", new);
return 0;
}
.
и результат:
str abc c
res add 0x1082fdf86 begin add 0x1082fdf86, end add 0x1082fdf88
start
temp c
Bus error: 10
Я думаю, что проблема заключается в «* конец = * начать», но я не знаю, почему? Вы можете мне помочь? Благодаря!
Попробуйте 'char begin [] =" abc ";' – WhozCraig
Первая проблема заключается в том, что опубликованный код не скомпилирован. в функции: str_reverse() есть неиспользуемая переменная: temp2 – user3629249
в главном (0 переменная 'new' конфликтует с зарезервированным словом 'new в C++, поэтому, если вы используете компилятор C++, ваш код пытается переопределить зарезервированное слово – user3629249