Что возвращает функция scanf? - программирование
Подтвердить что ты не робот

Что возвращает функция scanf?

Я знаю, что подпись функции scanf:

int scanf(const char *format, ...)

Какое значение int возвращается из этой функции?

4b9b3361

Ответ 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 возвращает количество успешно прочитанных элементов