Когда вы создаете строки, такие как "January"
или "December"
, компилятор генерирует const char *
, который указывает на постоянный массив символов с 0
в конце целое число, а не символ .
Ваш код пытается присвоить адрес "January"
11-му элементу в массиве, которого у него нет, потому что массивы начинаются с 0.
Это парапроблемы, во-первых, элементы month[]
являются символами, а не символьными указателями.Во-вторых, массивы начинаются с 0, поэтому вы хотели использовать month[9]
, хотя это все равно было бы неправильно.
Что вы хотите сделать, это скопировать каждый символ в массив, есть функции, которые делают это, например, strcpy
, но попробуйте сначала с помощью цикла for
, чтобы лучше понять, что происходитon.
Еще один способ решения этой проблемы, и, вероятно, ваш путь - это изменить month
с массива символов фиксированного размера на char *
, чтобы вы могли использовать ранееметод month = "January"
это то, как я бы предпочел сделать это сам, потому что он использует только столько памяти, сколько мне нужно, а синтаксис чище, хотя вы должны знать, как использовать оба метода.