Как обновить один char
в строке, объявленной как char*
?Обновление одного символа строки
Я попытался это:
int main(void)
{
char* s = "hello";
s[0] = 'y';
printf("%s\n", s);
return 0;
}
компилируется без предупреждений или ошибок с GCC 4.8.1 (MinGW) с использованием этих параметров:
gcc -Wall -Wextra -Werror -o str.exe str.c
Но когда я запускаю приложение, это только печатает пустую строку?
https://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/ – Xogle
Измените 'char * s' на' const char * s', и компилятор будет предупреждать, стоит отметить что как бы то ни было, 's' указывает на строковый литерал, который по своей сути является' const'. –
Причиной этого является 'char * s =" hello ";' создает * string-literal * в сегменте данных readonly. Попытка изменить данные только для чтения -> происходят плохие вещи. –