Я использовал эту строку кода многократно (обновление: когда строка была параметром функции!), Однако, когда я пытаюсь это сделать, теперь я получаю шину ошибка (как с gcc, так и с clang). Я воспроизвожу простейший возможный код;Ошибка шины при попытке доступа к символу в строке в C
char *string = "this is a string";
char *p = string;
p++;
*p='x'; //this line will cause the Bus error
printf("string is %s\n",string);
Почему я не могу изменить второй символ строки с помощью p-указателя?
В gcc есть опция '-Wwrite-strings', которая предупредит вас об изменении строковых букв, сделав их' const char [] '. Имейте в виду, что в стандарте указано, что буквальные строки - это 'char []' ("' только для чтения char [] '", но не 'const'), а их' const' делает ваш компилятор (более) несоответствующим. – pmg