C - удаление первого и последнего символа в строке

Как удалить первый и последний символ строки? С первым символом я вроде разобрался, а вот с последним выдает ошибку:

Thread 1: EXC_BAD_ACCESS (code=2, address=0x100003fb0)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (void) {
    char *text = "Something";
    printf("%s\n",text);
    
    // Удаление первого символа:
    
    char * text_change1 = text + 1;
    printf("%s\n",text_change1);
    
    // Удаление последнего символа:
    
    text_change1[strlen(text_change1) - 1] = 0;
    printf("%s\n", text_change1);
    
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Ну, по-хорошему, вы не удалили первый, а просто сдвинули указатель. А вот второй начали удалять, но откуда? Из строкового литерала. А это вещь такая, что ее менять никак нельзя.

Попробуйте так:

int main () {
    char text[] = "Something";   // А вот так — меняйте на здоровье!
    printf("%s\n",text);
    
    // Удаление первого символа:
    memmove(text,text+1,strlen(text));
    
    // Удаление последнего символа:
    
    text[strlen(text) - 1] = 0;
    printf("%s\n", text);
    
}
→ Ссылка