A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

欢迎大家多多交流,补充scanf函数的注意点!!!

scanf格式输入函数

一.   函数原型:int  scanf(const char *format,…);

其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。

返回值:scanf()函数返回成功赋值的数据项数,读到文件末尾或出错时则返回EOF

二.  注意点
    (1)  百分号(%)与格式符之间的星号(*)表示读指定类型的数据但不保存。因此,
scanf("%d%*c%d",&x,&y);
对 10/20 的读入操作中,10 放入变量 x,20 放入 y。

    (2)  虽然空格、制表符和新行符都用做域分割符号,但读单字符操作中却按一般字符处理。例如,对输入流 "x y" 调用:
scanf("%c%c%c",&a,&b,&c);
返回后,x 在变量 a 中,空格在变量 b 中,y 在变量 c 中。
注意,控制串中的其它字符,包括空格、制表符和新行符,都用于从输入流中匹配并放弃字符,被匹配的字符都放弃。例如,给定输入流 "10t20",调用:

scanf("%dt%d",&x,&y);
将把 10 和 20 分别放到 x 和 y 中,t 被放弃,因为 t 在控制串中。

    (3)   在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

    (4)  在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

3 个回复

倒序浏览
自己占个沙发,,欢迎大家补充!
回复 使用道具 举报
说的很详细,赞一个
回复 使用道具 举报
今早刚学,居然现在看不懂。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马