Я до сих пор не понимаю, как scanf
вернуть EOF
значение. Программа работает в окне.
Из описания scanf
:
"Функция scanf возвращает значение макроса EOF, если перед первым преобразованием произошел сбой ввода (еслиany) завершена. В противном случае функция scanf возвращает количество назначенных элементов ввода, которое может быть меньше предусмотренного или даже равно нулю в случае неудачного раннего сопоставления. "
codeis
int main()
{
int status,a1,a2,b1;
char str1[100];
b1=EOF;
printf("b1=%d\n",b1);
printf("Enter input\n");
status=scanf("%d%d",&a1,&a2);
printf("status=%d",status);
return 0;
}
вход case1:
hello
выход
status=0
вход case2:
^z (press CTRL-Z)
выход
staus=-1
В случае 1 - входной сбой перед первым преобразованием? если перед первым преобразованием произошел сбой ввода, почему scanf возвращает 0.
В случае 2 я нажимаю CTRL-Z для первого ввода, а scanf возвращает -1, поэтому единственный способ вернуть Scanf EOF - это нажать CTRL-Z? Если нет, объясните мне пример кода