Каждый спецификатор преобразования ожидает, что его соответствующий аргумент будет определенного типа; если тип аргумента не соответствует ожидаемому типу, то поведение не определено. Если вы хотите читать длинную строку с scanf()
, вам нужно использовать спецификатор преобразования %ld
:
long i;
scanf("%ld", &i);
Проверьте в режиме онлайн черновой стандарт C (файл .pdf), раздел 7.19.6.2, пункт 11, чтобы получить полный список модификаторов размера и ожидаемых типов.