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);
}