C++ scanf("%d\n",&mynum) 会产生什么结果
来源:互联网 发布:2016最火的网络舞蹈 编辑:程序博客网 时间:2024/04/29 12:48
下面是一段简单代码,看似没有问题,但,仔细观察不难发现,代码中存在 scanf 函数两次输入数据的问题,即 scanf("%d\n%d",&myfir,&mysec);
int main()
{int myfir,mysec;
scanf("%d\n%d",&myfir,&mysec);
printf("%d\n",mysec);
return;
}
那么可能就这么看也没什么,但是,如果代码是这样的呢
int main()
{int myfir;
scanf("%d\n",&myfir);
printf("%d\n",myfir);
return;
}
结果会是怎样,必须输入两次之后才能使得程序进行下去!
那么这算是为什么,原因在哪里?
原因在于scanf 是流输入函数,输入都存储在输入流中,数据用则从流上取下,未用则放在流上,流上始终有数据,scanf 只能从流上复写原来的初始未被使用的数据。
用换行符或者类似的空白符,如空格、制表符、换页符,scanf 都会跳过空白符去读下一个字符,因此,你必须输入两次。
同理,我们有时候会看见 scanf 有这样的语句:
scanf("please input your number :%d ",&myfir);
我们再输入自己的数据之前要先输入:
please input your number :
才能完成正确的数据录入。
scanf 还有很多相关知识点,这一次只讲换行符,今后遇见再说今后的知识点。
KK,GN。
0 0
- C++ scanf("%d\n",&mynum) 会产生什么结果
- C语言指针赋值0会产生什么结果?
- 在scanf里面使用换行符\n是一种什么体验?scanf("%d\n",&a);
- n-1位数 scanf(\n%*c%d)
- #include <stdio.h> //c库要.h。printf("Input n:\n");scanf("%d",&n);
- » scanf("%d\n");问题
- while(~scanf("%d%d",&n,&m)) {...}
- while (~scanf("%d%d",&m,&n)) 浅析
- C语言里面输出函数scanf加\n转行符号会出错
- 【C语言】 缓冲区问题 循环使用getchar scanf会受到换行符'\n'的干扰
- while(scanf("%d",&n),n)和while(scanf("%d",&n)!=EOF)和while(scanf("%d",&n)==1)和while(~scanf("%d",&n)
- for(;;)会有什么结果
- scanf中的%[^\n]%*c格式
- scanf中的%[^\n]%*c格式
- while(scanf("%d%d", &n, &m), n+m)
- 在C语言 %d/n 和/n%d 分别怎么表示什么啊
- while (scanf("%d",&n)!=EOF)
- while(scanf("%d",&n)!=EOF)
- 如何创建Wndows Phone 8.1应用程序包以及期间的问题解决方案和投放到应用商店的流程
- 算法训练 传球游戏
- CSRF攻击与防御
- Mongoose web server in Linux
- BZOJ 1098 POI2007 办公楼 DFS+并查集
- C++ scanf("%d\n",&mynum) 会产生什么结果
- poj1258
- 查看Oracle中的执行计划
- HDU 4508--湫湫系列故事——减肥记I【完全背包】
- C#一个简单报表实现
- Unity中预设体的创建(mac机)
- Ruby风格指导
- 广播和多播
- 程序员必备