关于cin和getchar()读取数据的方式
来源:互联网 发布:数据结构栈和队列java 编辑:程序博客网 时间:2024/06/03 16:08
首先我们呢看一下输入操作的原理, 程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是例子中为什么会出现输入语句失效的原因!
其实这里的10恰好是回车符!这是因为scanf()和getchar()函数是从输入流缓冲区中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(/n)而结束的,这个/n会一起读入输入流缓冲区的,所以第一次接受输入时取走字符后会留下字符/n,这样第二次的读入函数直接从缓冲区中把/n取走了,显然读取成功了,所以不会再从终端读取!这就是为什么这个程序只执行了一次输入操作就结束的原因!
我:输入缓冲区,当我们输入3 /n 时 cin 只读取了 3 留下了/n。下次读取的时候,在getline里 cin 会读取一个/n保存在s【1】中。
gets()
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:
阅读全文
0 0
- 关于cin和getchar()读取数据的方式
- 关于getchar() 和 cin 输入字符串的速度问题
- cin ,scanf()和getchar()的用法
- cin 和 getchar()
- 关于cin cin.getline cin.get getline gets getchar 的用法实例
- 关于getchar()cin>> 缓冲区的一点发现
- 关于scanf和cin读取字符的错误
- cin,scanf,gets,getline,getchar的一些区别和注意事项
- 关于用cin cin.get() getchar(), getline输入时的结束符问题
- cin.get()和cin.getline()、getline()和gets()、getchar()的区别
- C++中几个输入函数的用法和区别(cin、cin.get()、cin.getline()、getline()、gets()、getchar()))
- scanf()、getchar()、gets()、cin之间的区别
- scanf()、getchar()、gets()、cin之间的区别
- gets,scanf,getchar,cin.getline的用法
- cin与getchar、scanf之间的区别
- scanf()、getchar()、gets()、cin之间的区别
- C++ cin,getchar,get,getline的区别
- cin.getline()、getline()、gets()、cin.get(),getchar()的区别
- [Unity基础]Unity本地存储--Sqlite数据库
- USB小票打印解决办法
- CCPC.2017 哈尔滨站-重现赛-H(暴力+贪心)
- select函数总结
- python爬虫浏览器伪装
- 关于cin和getchar()读取数据的方式
- MVP注册登录模块,结合数据库查询和添加数据
- Linux教程:如何查找并移除Ubuntu上陈旧的PPA仓库
- PHP使用Curl请求Https地址时需要注意
- 学习 Shell —— 括号、引号
- Linux翻页命令more和less
- Vue小技巧
- UVa
- loj1016