Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register
欢迎参加IJCAI 2020麻将智能体竞赛,大奖等你拿!Welcome to IJCAI 2020 Mahjong AI competition with amazing prizes! | 北京大学《ACM/ICPC大学生程序设计竞赛训练》暑期课面向全球招生!

Re:为什么加个空格就过了 谁能告诉我!!!

Posted by GavinZheng at 2019-07-17 15:03:00 on Problem 1459
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator