scanf
возвращает количество элементов, которые были успешно отсканированы. Если вы запросили два целых числа с %d%d
, а scanf
возвращает 2, значит, он успешно отсканировал оба числа. Любое число меньше двух означает, что scanf
не смог отсканировать два числа.
int main()
{
int a,b;
int result;
printf("Enter two numbers :");
result = scanf("%d%d",&a,&b);
if (result == 2)
{
printf("Number 1 is : %d \n Number 2 is : %d",a,b);
}
else if (result == 1)
{
// scanf only managed to scan something into "a", but not "b"
printf("Number 1 is : %d \n Number 2 is invalid.\n", a);
}
else if (result == 0)
{
// scanf could not scan any number at all, both "a" and "b" are invalid.
printf("scanf was not able to scan the input for numbers.");
}
}
Еще одно значение, которое может вернуть scanf
, равно EOF
. Он может вернуть это, если есть ошибка чтения из потока.
Также обратите внимание, что main
возвращает int
, но вы объявили его с void
return.