Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:为什么加个空格就过了 谁能告诉我!!!In Reply To:Re:为什么加个空格就过了 谁能告诉我!!! Posted by:the_brothers_four at 2015-08-03 18:38:25 > 这和scanf的机制有关,scanf读入数据时每个字符都会存到缓冲区(buffer),然后再按照指定的格式将文本转化成数据存到相应的变量内。 > 比如语句 > int a; > scanf("%d", &a); > 假设输入是" 10 " > 数字10,前后都有空格,而%d会自动忽略数字前面的空格,数字前面的空格被一一吃掉了,但后面的空格却仍存在缓冲区内, > 供后续读入使用。 > 因此如果scanf("%d", &a); 后面紧接着的scanf语句是scanf("(%d,%d),%d", &x, &y, &z); 的话, > 这时会将缓冲区内紧接着的那个字符(即空格' ')和'('比较,如果比较失败的化,就终止读入。 > 但如果加上了空格,就会把当前遇到的所有空白字符(包括回车、tab、空格)全都忽略(吃掉), > 直到遇到第一个非空白字符再拿它和'('比较。 > 关于scanf的工作机制,可参考这个链接http://www.cplusplus.com/reference/cstdio/scanf/?kw=scanf,讲得比较详细。 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator