欢迎来到天天文库
浏览记录
ID:20822071
大小:37.00 KB
页数:7页
时间:2018-10-16
《scanf 原型:》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、scanf原型:#include;intscanf(constchar*format,...); 函数scanf()是从标准输入流stdin中读内容的通用子程序,可以读入全部固有类型的数据并自动转换成机内形式。scanf()是printf()的补函数。 在C99中,format用restrict修饰。 format指向的控制串由以下三类字符组成: ●格式说明符 ●空白符 ●非空白符 输入格式说明符前缀为百分号(%),告诉scanf()下次读入何种数据类型。这些格式说明符的清单如下表所示: ┏
2、━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃代 码│ 意 义 ┃ ┠────┼────────────────────────────┨ ┃ %a │读浮点值(仅适用于C99) ┃ ┃ %A │读浮点值(仅适用于C99) ┃ ┃ %c │读单字符 ┃ ┃ %d │读十进制整数
3、 ┃ ┃ %i │读十进制、八进制、十六进制整数 ┃ ┃ %e │读浮点数 ┃ ┃ %E │读浮点数 ┃ ┃ %f │读浮点数 ┃ ┃ %F │读浮点数(仅适用于C99) ┃ ┃ %g
4、│读浮点数 ┃ ┃ %G │读浮点数 ┃ ┃ %o │读八进制数 ┃ ┃ %s │读字符串 ┃ ┃ %x │读十六进制数 ┃ ┃ %X │读十六进制数
5、┃ ┃ %p │读指针值 ┃ ┃ %n │至此已读入值的等价字符数 ┃ ┃ %u │读无符号十进制整数 ┃ ┃ %[] │扫描字符集合 ┃ ┃ %% │读%符号(百分号) ┃ ┗━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
6、 例如:%s表示读串而%d表示读整数。格式串的处理顺序为从左到右,格式说明符逐一与变元表中的变元匹配。为了读取长整数,可以将l(ell)放在格式说明符的前面;为了读取短整数,可以将h放在格式说明符的前面。这些修饰符可以与d、i、o、u和x格式代码一起使用。 默认情况下,a、f、e和g告诉scanf()为float分配数据。如果将l(ell)放在这些修饰符的前面,则scanf()为double分配数据。使用L就是告诉scanf(),接收数据的变量是longdouble型变量。 如果使用的现代编译器程序支持1995年增加的宽字符特性,则
7、可以与c格式代码一起,用l修饰符说明类型wchar_t的宽字符指针;也可以与s格式代码一起,用l修饰符说明宽字符串的指针。l修饰符也可以用于修饰扫描集,以说明宽字符。 控制串中的空白符使scanf()在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。本质上,控制串中的空白符使scanf()在输入流中读,但不保存结果,直到发现非空白字符为止。 非空白符使scanf()在流中读一个匹配的字符并忽略之。例如,"%d,%d"使scanf()先读入一个整数,读入中放弃逗号,然后读另一个
8、整数。如未发现匹配,scanf()返回。 scanf()中用于保存读入值的变元必须都是变量指针,即相应变量的地址。 在输入流中,数据项必须由空格、制表符和新行符分割。逗号和分号等不是分隔符,比如以下代码
此文档下载收益归作者所有