Я пытаюсь изучить основы C, но я не могу понять, почему этот код не работает. Цикл while в обратном порядке() вызывает ошибку шины. Я нашел почти идентичный код в книге интервью с программированием в качестве действительного решения, но ни этот, ни другие подобные методы, которые я видел здесь, не работают без ошибок шины.In-Place String Reverse in C
#include <stdio.h>
void reverse(char* str) {
char* end = str;
char tmp = 0;
if(str) {
while(*end) {
end++;
}
--end;
while(end>str) {
tmp = *end;
*end-- = *str;
*str++ = tmp;
}
}
}
int main() {
char* a = "12";
puts(a);
reverse(a);
puts(a);
return 0;
}
См http://stackoverflow.com/questions/4493139/are-string-literals-const и многие другие вопросы (например, по крайней мере, один раз в неделю) на SO. – ephemient