- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
scanf函数探讨(Discussion on scanf function)
scanf函数探讨(Discussion on scanf function)
Discussion on scanf function:
1. blank symbol problem
#includestdio.h
(main)
{
Int a;
Printf (input the data\n);
Scanf (%d\n, a); / / here more than a carriage return \n
Printf (%d, a);
Return 0;
}
As a result, two numbers are entered before the end of the program, not the expected one. Why?
Reason: when whitespace ends, scanf skips whitespace to read the next character, so you must enter a number again. Here the whitespace including space, tab, newline, carriage return and formfeed. So if you use scanf (%d, a), the same problem will occur.
Solution: this kind of mistake is mostly input carelessly, just pay more attention to it. This problem is not good, check, compile no problem, a blank is not easy to see. When your program appears above problems, check it yourself.
2. buffer issues
This is a very easy place to go wrong, and I miss it many times.
#include stdio.h
(main)
{
Int n = 5;
Char c[n];
For (int i = 0; I n; i++)
C[i] = scanf (%c, c[i]);
Printf (C);
Return 0;
}
If input:
A
B
C
Then the cycle will end in advance
Reason: after entering a and the first carriage return, the A and the carriage return are left in the buffer. The first scanf reads the A, but there is a \n left in the input buffer, and the second scanf reads the \n. Then enter B and second carriage returns. Similarly, the third scanf reads the B, and the fourth scanf reads the second carriage return characters. The fifth reads the C. So the five scanf were executed and didnt end early. Only some scanf read the carriage return.
Solution: change the program to just this:
For (I = 0; I n; i++) {
Scanf (%c, c[i]);
Fflush (stdin); / / refresh buffer
}
Or use gets () functions instead of scanf, such as:
#includestdio.h
(main)
{
Char c[5];
Gets (C);
Printf (C);
Return 0;
}
But note: this function automatically converts your last hit return to character\0. If your input exceeds the size of the array, an error will occur.
The parameter input type mismatch for the 3.s
您可能关注的文档
- 20个excel时间函数的使用方法(The use of 20 excel time functions).doc
- 202009年秋季南安市小学四年级数学学习目标检测质量分析48836(Quality analysis of grade four mathematics learning goal in grade 202009 of Nanan primary school in autumn 48836).doc
- 20个超级美容误区(20 super beauty mistakes).doc
- 20岁-30岁职业生涯规划(20 years old, -30 years old, career planning).doc
- 2014年水利行业安全生产网络知识竞赛试题12(In 2014, water conservancy safety production network knowledge contest questions 12).doc
- 20篇会计实习日志(20 Journal of accounting practice).doc
- 2015年俄罗斯金秋十月国际农业机械展览会(October International Agricultural Machinery Exhibition, Russia, autumn, 2015).doc
- 23天重启河北第一名酒(23 days to restart Hebei's first wine).doc
- 250句最通俗最常用的英语口语(250 sentences are the most popular and frequently used spoken English).doc
- 24本书、24部电影(24 books, 24 movies).doc
- sea-source bay 使用lucene的api遍历lucene索引(Sea-source Bay traverses the Lucene index using the API of Lucene).doc
- r软件语句(R software statement).doc
- rudang(入档).doc
- ptn设备在移动承载网建设中的部署(Deployment of PTN equipment in mobile bearer network construction).doc
- sat考试规则(SAT test rules).doc
- server2003远程桌面连接(Server2003 Remote Desktop Connection).doc
- services.msc服务(MSC服务服务。).doc
- shixi(石西).doc
- shiyong(史勇).doc
- silo中文对比(Silo Chinese contrast).doc
原创力文档


文档评论(0)