《C Primer Plus》
1、scanf()函数返回成功读入的项目的个数。
num = scanf ("%d %d %d", &a, &b, &c);
运行结果:
输入 1 2 3 之后,num=3
输入1 2 a 之后,num=2
2、当scanf()未能读取指定形式的输入时,它就留下这个不相容的输入,以供下次进行读取。
// trouble.c -- misuse of =
// will cause infinite loop
#include <stdio.h>
int main(void)
{
long num;
long sum = 0L;
int status;
printf("Please enter an integer to be summed ");
printf("(q to quit): ");
status = scanf("%ld", &num);
while (status = 1)
{
sum = sum + num;
printf("Please enter next integer (q to quit): ");
status = scanf("%ld", &num);
}
printf("Those integers sum to %ld.\n", sum);
return 0;
}
运行结果如下:
Please enter an integer to be summed (q to quit): 20
Please enter next integer (q to quit): 5
Please enter next integer (q to quit): 30
Please enter next integer (q to quit): q
Please enter next integer (q to quit):
Please enter next integer (q to quit):
Please enter next integer (q to quit):
Please enter next integer (q to quit):
请注意:输入q之后,再也无法进行更多的输入。
因为当scanf()试着把q作为整数读取并且失败时,它就把q留在了那里。在下次循环中会继续读取留下来的这个q,可是scanf()会再次失败。所以,后面只会无限地显示Please enter next integer (q to quit):