Ошибка сегментации при записи в строку [дубликат]

На этот вопрос уже есть ответ:

Почему я получаю ошибку сегментации при записи в строку, инициализированную «char * s», но не «char s []»? 17 ответов

Я пытаюсь написать обратную функцию на месте и почти точно следовал онлайн-коду, но при запуске следующей программы выдается ошибка шины. Я передаю неправильный вид аргумента для reverse ()?

void reverse(char *str) {
    char * end = str;
    char tmp;
    if (str) {
        while (*end) {
            ++end;
        }
        --end;
        while (str < end) {
            tmp = *str;
            *str++ = *end;
            *end-- = tmp;
        }
    }
}

int main() {
    char *s = "sample";
    reverse(s);
    printf("%s\n");
    return 1;
}

Ответы на вопрос(0)

Ваш ответ на вопрос