用于读取一个整数的字段说明符为:
% w d
百分号表明后面跟的使转换说明符。W是一个整数,指定要读取的数字的字段度,而d为数据类型字符,表明要读取的数据为整形数据。请看下面示例:
scanf("%2d%5d",&num1,&num2);
输入数据为
50 31426
值50赋给了num1,而31426赋给了num2.假设输入的数据为:
31426 50
那么变量num1被赋给的值是31,而变量num2被赋给的值是426.值50未被读取,但它可赋给下一个scanf函数调用中的第一个参数。如果只是使用字段类型说明符,而无字段宽度说明符,这种错误就可以避免。也就是说,使用语句:
scanf("%d%d",&num1,&num2);
可以正确读取数据:
31426 50
此时就可以正确地将值31426赋给num1,而50赋给num2了。
输入数据的各项必须用空格、制表符或换行符隔开。不能用标点符号来分隔。当scanf函数从输入数据行读取数据时,将忽略所有这些空白字符。
如果我们输入的是浮点数而不是整数时,小数部分将被截除!而且,scanf函数还会忽略掉多余的输入。
当scanf函数读取某个特定的值时,如果指定了字段的宽度,只要读取的字符数够了,或者读取时遇到了一个不合法的字符时,读取工作将被中止。当要读取的是整数时,如果输入的是合法的字符,那么久把这些字符看做是有符号的数字。
通过字段的宽度说明符位置上指定*,就可以跳过该输入字段。例如,语句:
scanf("%d %*d %d",&a,&b);
此时,如果输入如下数据:
123 456 789
那么,123赋给a,456被忽略,789赋给b