PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 求比较漂亮的写法
楼主:
d630200x
(DOGE)
2018-08-01 18:29:11
使用的是C
time_t myTime = time (NULL);
do{
if(time (NULL) - myTime > 9){
myTime = time (NULL);
printf ("%s\n", asctime (gmtime(&mytime)));
}
} while(1);
一个无穷循环,每隔10秒就会印出时间
但是没办法一执行马上就印出时间,我唯一想到的方法就是把printf写在循环前
想请问一下有没有其他写法可以在循环内先印一次,之后每隔10秒再印的
作者:
cutekid
(可爱小孩子)
2018-08-01 18:45:00
(now - myTime) % 10 == 0
作者:
Hazukashiine
(私は幸せです)
2018-08-01 18:48:00
while (1) { print(time); wait(10); }你这个循环很恐怖 会抢占 CPU 资源
作者:
Schottky
(顺风相送)
2018-08-01 19:00:00
多写一个 printf 并没有什么大问题,我也会这样写,倒是楼上说的浪费 CPU time 跑循环问题比较大如果觉得同样的 code 写两次很蠢,独立写成 function即可,应该会自动变成 inline function
作者: FrozenMoment
2018-08-01 19:13:00
推2楼
作者:
adrianshum
(Alien)
2018-08-01 20:36:00
像上面所说用wait sleep 之类最合理。硬要这样写的话,把 myTime 的宣告改做 time_t myTime = 0; 就好了
作者:
kikiqqp
(喵食罐头)
2018-08-02 01:40:00
加个bool判断是不是首次进入.....
作者:
Sex5F
(HTC)
2018-08-02 09:26:00
这okay阿,开个thread改成sleep就好sleep起来后再确认一次时间到底到了没,这做法很标准
作者:
Hazukashiine
(私は幸せです)
2018-08-02 14:04:00
干嘛开 thread 还有 sleep 完干嘛再检查?
作者:
Schottky
(顺风相送)
2018-08-02 17:44:00
因为 sleep 会被 signal 打断所以说是标准作法,nanosleep 也是要睡醒看一下剩多久至于为什么要开 thread 我就不懂了 XD
作者:
cphe
(魔鬼藏在垃圾筒里)
2018-08-03 00:55:00
如果这边的time_t定义是long,你又真的想为这个case少一行print,myTime初值设为0就好另外用difftime 应该比较好一些
继续阅读
Re: [问题] 抱歉 再询问一次 c++强制转换
djshen
[问题] 抱歉 再询问一次 c++强制转换
s9642108
Re: [问题] 九九乘法表不用循环是叫我直接从1列到81?
Schottky
[问题] MFC在内嵌的Tab下如何控制Dialog中的Combobox元件
bamchisu
[问题] C在内存的分布
gn00618777
[问题] 有关 short 转double 问题
s9642108
[问题] MFC搭配CxImage制作GIF动画
asdfg1597860
Re: [问题] 九九乘法表不用循环是叫我直接从1列到81?
Schottky
[问题] 如何正确修正 warning C6011 ?
chrisdar
[问题] array pointer的问题
sighAll
Links
booklink
Contact Us: admin [ a t ] ucptt.com