怎样让一个循环执行五秒跳出

khqinzheng 2019-08-14 12:28:24
怎样才能让一个循环在执行五秒后退出啊?这个循环里还得输入一个值,如果不输入任何东西,也要在五秒到时退出
...全文
507 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
klavien 2019-08-17
  • 打赏
  • 举报
回复 1
<s pan style="color: #FF0000;">std::this_thread::sleep_for(5s);</s pan>这里其实是一句C++代码,本来想标红的,出问题了,你就记住下面这句就可以了: std::this_thread::sleep_for (std::chrono::seconds(5)); 这一句就是让程序休眠5s
klavien 2019-08-17
  • 打赏
  • 举报
回复
如果你的编译器支持C++11标准,那么你可以使用类似下面的伪代码思路。

#include <chrono>
#include <thread>

......

if(exp is true){
    do something here!
}
else{
    std::this_thread::sleep_for(5s); // 重要的是这句C++代码,其它自由发挥吧
}
注意:你的编译器要支持C++11(及以上)标准
老葱1# 2019-08-16
  • 打赏
  • 举报
回复
今年才学c++,就想到这个,后生可畏啊 这个问题,我刚写 博客 https://blog.csdn.net/hanxb/article/details/99686789
  • 打赏
  • 举报
回复
引用 5 楼 khqinzheng 的回复:
谢谢,我想请问下有更简单一的点方法吗,我今年才学的C++,掌握的东西太少了。
等待输入,定时跳过,就是比较复杂的了。 确实不是初学C++能够用起来的。 这个应当是最简单的不超过50行代码。很有限的语句。
khqinzheng 2019-08-14
  • 打赏
  • 举报
回复
引用 4 楼 zjq9931的回复:
用线程的方式等待输入,超过5秒,就不再等待输入

#include <stdio.h>
#include <windows.h>

#define WAIT_TIME 5000

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
	printf("请输入一个数字:");
	scanf("%d", (int*)lpParameter);
	return 0;
}

int main()
{
	int num = 0;
	DWORD exitCode = 0;
	DWORD inputCode;

	HANDLE hThreadInput = CreateThread(NULL, 0, ThreadProc, &num, 0, 0);

	inputCode = WaitForSingleObject(hThreadInput, WAIT_TIME);

	if (inputCode == WAIT_TIMEOUT)
	{
		printf("\n没有输入数字\n");
	}
	else
	{
		printf("输入的数字是:%d\n", num);
	}
	return 0;
}
谢谢,我想请问下有更简单一的点方法吗,我今年才学的C++,掌握的东西太少了。
  • 打赏
  • 举报
回复
用线程的方式等待输入,超过5秒,就不再等待输入

#include <stdio.h>
#include <windows.h>

#define WAIT_TIME 5000

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
	printf("请输入一个数字:");
	scanf("%d", (int*)lpParameter);
	return 0;
}

int main()
{
	int num = 0;
	DWORD exitCode = 0;
	DWORD inputCode;

	HANDLE hThreadInput = CreateThread(NULL, 0, ThreadProc, &num, 0, 0);

	inputCode = WaitForSingleObject(hThreadInput, WAIT_TIME);

	if (inputCode == WAIT_TIMEOUT)
	{
		printf("\n没有输入数字\n");
	}
	else
	{
		printf("输入的数字是:%d\n", num);
	}
	return 0;
}
待续_1006 2019-08-14
  • 打赏
  • 举报
回复
你需要一个定时器
qybao 2019-08-14
  • 打赏
  • 举报
回复
for example
chat[100] c;
time_t now = time(NULL);
struct tm *ts = localtime(&now);
int s = ts->tm_sec;
while (true) {
scanf("please input: %s", c);
if (strlen(c) > 0) { //如果有输入就马上退出
break;
}
now = time(NULL);
ts = localtime(&now);
int ns = ts->tm_sec;
if (ns - s >= 5) { //没有输入则过5秒退出
break;
}
}
printf("your_input=%s\n", c);
CodeAllen嵌入式 2019-08-14
  • 打赏
  • 举报
回复
1 while(expr)的判断条件为假时,自动退出循环。即expr值为0。 2 while中执行到属于while自身的break语句。break语句的功能就是跳出所在循环,所以这个可以实现强制跳出。 3 当执行到return语句。 如果执行了return语句,会退出整个函数,自然就跳出循环了。 4 执行goto语句,同时目标在循环外。如果goto语句指向的标签在循环外,那么程序会无条件执行该点,同样也可以达到退出循环的效果。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧