Что возвращает функция scanf?
Я знаю, что подпись функции scanf
:
int scanf(const char *format, ...)
Какое значение int
возвращается из этой функции?
Ответы
Ответ 1
Со страницы man
:
NAME
scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf
...
RETURN VALUE
These functions return the number of input items successfully matched
and assigned, which can be fewer than provided for, or even zero in the
event of an early matching failure.
The value EOF is returned if the end of input is reached before either
the first successful conversion or a matching failure occurs. EOF is
also returned if a read error occurs, in which case the error indicator
for the stream (see ferror(3)) is set, and errno is set indicate the
error.
В вашем случае, scanf()
может вернуть 0
, 1
или EOF
.
Ответ 2
От scanf:
При успешном выполнении функция возвращает количество успешно прочитанных элементов. Этот счетчик может соответствовать ожидаемому числу показаний или меньше, даже равному нулю, если произойдет соответствующий сбой. В случае сбоя ввода перед тем, как любые данные могут быть успешно прочитаны, возвращается EOF.
Ответ 3
Технически это поведение UB (Undefined).
int g;
int p=scanf("%d",g);
^
Вы передаете унифицированное целое число в scanf, чтобы использовать его в качестве адреса для записи. С этого момента все может случиться. Скорее всего, ваше приложение будет разбиваться.
Ответ 4
Я думаю, что ваш код не будет работать правильно, потому что вы забудете "&". в функции scanf.
int g=0; //init the variable
int p=scanf("%d",&g);
функция scanf поместит введенное значение в адрес переменной g.
Ответ 5
Независимо от того, что вы дадите в входе VDU, переходите к переменной g
, и если успешно прочитано, p
равно 1.
Ответ 6
он вернет 1, так как scanf возвращает количество успешно прочитанных элементов