Code Bye

C语言 字符读取问题

本人要做一个四子棋倒计时的程序,本人现在问题是,本人不动键盘,时间虽然记录,但不及时输出到屏幕。问题就出在getch(),本人不输入任何东西,程序就一直在那里等着,也不会往下进行,导致本人的letime()函数就输出当前剩余时间。
怎么样可以当本人什么都不输入的时候,就进行letime(),假如有输入再进行函数move()呢?
着急,大家帮帮忙~~谢谢啦~
	while (lastside == nowside)//只要行棋方没有变,而且没有落子,进行循环
	{
		letime();//本人记录时间的函数,输出剩余时间
		char c;
		c = getch();//读取用户键盘输入字符
		if (c != "\0")
//这个调试发现,程序会一直等在上一步。本人是想,当用户不输入,本人就一直调用letime,若有输入,再调用move,show
                {
			move(c);//只有有了输入,这个函数才会有用
			system("cls");
			show(px, py);//打印棋盘的函数
		}
解决方案

5

用select或polling或epoll,检查stdin的可读缓存

10

把 c = getch()移动到另一个线程中去
具体办法:
1 写一个线程函数,开辟一个全局变量用于存放输入的字符
2 主线程中检查线程能否输入了字符

15

_kbhit()

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C语言 字符读取问题