Проблема здесь в том, что вы пытаетесь прочитать переменную, объявленную как char
, используя формат %d
в scanf
(который запишет int
по указанному адресу):
scanf(" %d", &lights[i]); // lights is declared as char[2]
В строке формата следует использовать спецификатор размера «очень маленький» ( спецификаторы формата scanf ):
scanf(" %hhd", &lights[i]);
Не уверен, почему это может привести к предупреждению «разрушения стека», но я не знаком с вашим анализатором кода, хотя (но см. комментарий Alain Merigot ). Однако попытка записать значение int
(вероятно, 4 байта) в местоположение, которое составляет всего char
(1 байт), будет неопределенным поведением.