Функция в порядке, но ваш main()
не отображается для инициализации строки a
.
Попытка:
int main() {
char a[1024];
strcpy(a, "Some string");
printf("before reverse: %s\n", a);
strrev(a); // function provided by Chris Conway
printf("after reverse: %s\n", a);
return 0;
}
Обратите внимание, что я создаю копию "Some string" внутри a
(вместо прямого присваивания char* a = "Some String"
), потому что попытка изменить константу напрямую не будет компилироваться. И если вам удалось скомпилировать (например, слабый компилятор, или вы принудительно удалили константность с помощью cast / const_cast), то вы рискуете потерпеть крах вашей программы, потому что «Некоторая строка» фактически находится в той части памяти, которая читается -только в некоторых системах, поэтому копия должна быть сделана внутри локальной переменной (т. е. в стеке) или новой переменной (выделена с помощью new или malloc, т. е. в куче).