在scanf里面使用换行符\n是一种什么体验?scanf("%d\n",&a);
2016-07-16 11:46
399 查看
今天有个学生发了简单的求周长程序给我,和我说,不知道为什么输入了4个数,而且最后计算时input long 输入的两个数,和输入的width没有关系了。课堂强调过scanf里面不要去用\n,我原以为是会警告, 没有想到“\n”在scanf里面有它自己的意义所在。
在scanf中 “\n” 不是表示接受一个回车符,而是表示忽略所有的空白字符(包括回车,空格,tab )。所以想要结束输入,输入任意一个非空白字符即可,但是该字符仍然会留在缓冲区中。
如果说,使用了 “\n”,希望变量a,b存入的数值是每个scanf输入的第一个数字的话,可以清除缓存。
如下面的程序。一般不建议在 scanf中使用“\n”。
后来发现,原来fflush(stdin);并不是C标准里面有的,从代码的移植性考虑。可以采用下面这篇文章作者的做法。(此处就做部分截图)。http://my.oschina.net/deanzhao/blog/79790
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构