s
имеет место для 6 символов (а именно 'h', 'e', 'l', 'l', 'o' и '\ 0').
Вы пытаетесьнапишите на 5 символов больше, чем он может вместить.
Не делайте этого!
Попробуйте увеличить размер s
до
int main()
{
char s[11] = "hello";
/* ... */
Редактироватьпосле редактирования OP
Изменение s
в основном на
char *s = "hello";
изменяет s
из массива с небольшим пространством на указатель на строковый литерал.
Строковые литералы не могут быть изменены, поэтому вы не можете ожидать, что ваш код будет работать с изменением.