Подтвердить что ты не робот

Используя scanf в C/С++

Чтобы прочитать int с помощью scanf, мы используем:

scanf("%d",&i);

Что делать, если i длинное не int??

Примечание: при использовании %d с long это вызывает у меня раздражающее предупреждение.

Спасибо!

4b9b3361

Ответ 1

Просто используйте

long l;

scanf("%ld", &l);

это вызывает у меня раздражающее предупреждение.

Это предупреждение совершенно верно. Это попросит о повреждении стека.

Ответ 2

Для бога:

long n;
scanf( "%ld", & n );

Ответ 3

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

long i;
scanf("%ld", &i);

Проверьте онлайн проект стандарта C (.pdf файл), раздел 7.19.6.2, пункт 11, для полного списка модификаторов размеров и ожидаемых типов.

Ответ 4

scanf("%ld", &i);

Вы также можете использовать "%Ld" для long long (и в зависимости от вашего компилятора, иногда также "%lld").

Взгляните на раздел "Преобразования" страницы руководства scanf для получения дополнительной информации. (Просто Google это, если ваша система не имеет manpages).

Ответ 5

Проверьте это, вот ответ: "% I64d"