如何让while(1)下的一个函数只执行一次 c语言

嵌入式小侠 2012-11-10 04:38:01
例如:


uchar a;
whlie(1)
{
while(a==0)
ab();
}
void ab()
{
clean_screen();


...
}

如何实现每次a==0时让clean_screen()只执行一次
...全文
2998 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
嵌入式小侠 2012-11-20
  • 打赏
  • 举报
回复
还是用flag解决,用static不行,谢谢各位的热心帮助。thank you!
SanGetInstance 2012-11-12
  • 打赏
  • 举报
回复
加个计数器啊判断次数。看语句有点像单片机C,常用计数器 uchar a; uchar count; whlie(1) { while(a==0){ if(count==0) ab(); count++; } } void ab() { clean_screen(); ... }
ForestDB 2012-11-12
  • 打赏
  • 举报
回复
引用 17 楼 zh458042230 的回复:
void ab() { 这里加点什么能实现呢? if a == 0 return clean_screen(); ... }
if a == 0 return
X366ING 2012-11-12
  • 打赏
  • 举报
回复
感觉方法不对头,是不是不应该用while语句,if语句不行吗
636f6c696e 2012-11-12
  • 打赏
  • 举报
回复
用一个全局变量
例如:
static i = 0;
if (i == 0)
{
Fun();
i++;
}
vcorange 2012-11-12
  • 打赏
  • 举报
回复
为什么总是扯这些 没意义的事 就 for(;1;) 一样 直接ab() 就好了的 非得while 更好笑的 加了大量的if
  • 打赏
  • 举报
回复
他是while里面还有其他操作要一直执行吧 楼主,实在不行试试多线程吧 还有,既然a是一个在while(1)之外定义的变量,你为什么不在执行clean的地方用if判断a来做呢?
majia2011 2012-11-12
  • 打赏
  • 举报
回复 1
看来很多人没学过do while,呵呵呵
  • 打赏
  • 举报
回复
void ab() { while(!a) { ...... //让系统重新检测a的值的句子 } clean_screen(); ... }
daiyier 2012-11-12
  • 打赏
  • 举报
回复
whlie(!a) { ab(); } void ab() { clean_screen(); ... }
wzb56 2012-11-12
  • 打赏
  • 举报
回复

uchar a;
uchar lock = 0;
whlie(1)
{
    if(a==0) {
        if(lock) continue;
        ab();
        lock = !lock;   //关锁 
    }else {
       lock = 0; // 开锁
    } 
}
void ab()
{
   clean_screen(); 
...
}
benbendeda 2012-11-11
  • 打赏
  • 举报
回复
用continue或break
gotopause 2012-11-11
  • 打赏
  • 举报
回复
怎么回事?怎么发了一堆就剩这么一行了??flag=true
gotopause 2012-11-11
  • 打赏
  • 举报
回复
flag =true
gotopause 2012-11-11
  • 打赏
  • 举报
回复
flag =true
Code_Talk 2012-11-11
  • 打赏
  • 举报
回复
zhq445078388 2012-11-11
  • 打赏
  • 举报
回复
他要的会不会是 while(1) { if (a==0 && yes == flase) { yes = true clean_screen() }else { yes = flase } }
绿领巾童鞋 2012-11-11
  • 打赏
  • 举报
回复
这个问题太无聊了,已经知道只执行一次,为什么还要用while(1)?如果知道特定情况执行一次,那么加if 判断然后break不就over了
shirui8653719 2012-11-10
  • 打赏
  • 举报
回复
24楼的应该可以吧。
转角天边 2012-11-10
  • 打赏
  • 举报
回复

uchar a;
whlie(1)
{
   while(a==0)
   ab();
}
void ab()
{
    static  int  i=0;
    if(a==0&&i==0)
    {
       i++;
       clean_screen();
    }
    else  if(a!=0)
       clean_screen();  
...
}
这样行不
加载更多回复(23)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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