码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++.控制台输入(cin/getchar)

时间:2019-11-19 14:17:25      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:can   fcntl   async   nbsp   应该   取出   hit   linux   缓冲   

1、类似的函数有:cin、getchar、fgetc 等

2、问题:

  最后的"\n"都不取出来...

 2.1、对策:(ZC:下面是 我自己使用后的感受)

  (1)fflush(stdin) ==> 没反应...    _flushall();也没反应

  (2)int _kbhit( void ); ==> 结果不准  <conio.h>

   网上的资料:getchar,scanf,getch,这些,如果用户没有输入就会阻塞,如果不希望阻塞,应该怎么办?网上搜了一下,Linux可以用 fcntl,但 Windows 就不行了(可以用 GetAsyncKeyState 检查按键,但是不能知道stdin 是否有内容)  有人答复:Windows有的。用_kbhit()(因为是立即返回的,你可能要放到循环里),判断是不是有键按下,然后用_getch()取走。

  (3)cin.peek() ==> 输入缓冲区里面有数据的时候,判断结果准确的;输入缓冲区 为空的时候 该函数也会阻塞...

 2.2、上面的方式 都不咋地...现在用下面的 这种方式:

  每次调用完 cin、getchar、fgetc 等函数后,自己手动加上 一句"getchar()",把最后的"\n"取走...

  举例子:(cin >> bufIn).get();

3、

4、

5、

 

C/C++.控制台输入(cin/getchar)

标签:can   fcntl   async   nbsp   应该   取出   hit   linux   缓冲   

原文地址:https://www.cnblogs.com/cppskill/p/11888529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!