久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5516|回復: 32
打印 上一主題 下一主題
收起左側

這個C語言程序怎么跳出這個WHILE循環?

  [復制鏈接]
回帖獎勵 100 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:621862 發表于 2020-9-4 16:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
        printf("AT+CGATT?\r\n")
                        delay_ms(700);
        strx=strstr((const char*)RxBuffer,(const char*)"+CGATT: 1");//·μ1
        Clear_Buffer();        
                while(strx==NULL)
                {
            Clear_Buffer();        
            printf("AT+CGATT?\r\n");/
            delay_ms(700);
            strx=strstr((const char*)RxBuffer,(const char*)"+CGATT: 1“)
                                delay_ms(1000);
                }


怎么跳出這個while循環  模塊不返回正確數據他就一直卡在這了

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:816763 發表于 2020-9-4 17:56 | 只看該作者
要跳出這個while循環  必須要匹配到數據
回復

使用道具 舉報

板凳
ID:466505 發表于 2020-9-4 18:33 | 只看該作者
加個超時唄,循環N次后就跳出;
回復

使用道具 舉報

地板
ID:627214 發表于 2020-9-4 20:55 | 只看該作者
用break跳出循環
回復

使用道具 舉報

5#
ID:511890 發表于 2020-9-4 21:50 | 只看該作者
當RxBuffer字符串中能夠找到 +CGATT: 1 的時候,才能跳出循環。
感覺Clear_Buffer();  的位置有點問題。
如果Clear_Buffer(); 是清空RxBuffer的話,那么應該把Clear_Buffer(); 放到delay_ms(1000);之后。
這個應該是一個文件或者文件名查找之類的程序的一部分。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:235954 發表于 2020-9-5 09:19 | 只看該作者
strx==NULL收到空格,接受數據完畢就退出while循環
回復

使用道具 舉報

7#
ID:478514 發表于 2020-9-5 14:00 | 只看該作者
要跳出這個while循環  必須要匹配到數據
回復

使用道具 舉報

8#
ID:419968 發表于 2020-9-6 22:42 | 只看該作者
while((strx==NULL)&&(time != 0){time--;}
回復

使用道具 舉報

9#
ID:750684 發表于 2020-9-7 08:15 | 只看該作者

要跳出這個while循環  必須要匹配到數據
回復

使用道具 舉報

10#
ID:816586 發表于 2020-9-7 08:41 | 只看該作者
while循環  
回復

使用道具 舉報

11#
ID:808634 發表于 2020-10-9 08:33 | 只看該作者
break;
回復

使用道具 舉報

12#
ID:367460 發表于 2020-10-9 10:22 | 只看該作者
可以在死循環中加一個計數,如果計數滿之前還是沒有跳出while(strx==NULL),可以直接用 break; 跳出
回復

使用道具 舉報

13#
ID:86450 發表于 2020-10-9 11:38 | 只看該作者
goto 。。。。。。。。。。。。
回復

使用道具 舉報

14#
ID:827294 發表于 2020-10-9 17:33 | 只看該作者
用break打斷跳出循環
回復

使用道具 舉報

15#
ID:827215 發表于 2020-10-9 18:27 | 只看該作者
可以在函數內加一個變量,然后自加,自加到一定數時,由你決定是給出警告還是退出
回復

使用道具 舉報

16#
ID:711539 發表于 2020-10-9 20:07 | 只看該作者
可以設計超時/超循環次數跳出循環,使用break 語句
回復

使用道具 舉報

17#
ID:626331 發表于 2020-10-9 20:38 | 只看該作者
這就是你設計的有問題吧,你可以想,如果模塊不返回值,那你就到一個時間之后自己跳出來
回復

使用道具 舉報

18#
ID:821802 發表于 2020-10-9 21:21 | 只看該作者
unsigned int cnt;//程序最開始聲明一個計數的變量

printf("AT+CGATT?\r\n")
delay_ms(700);
strx=strstr((const char*)RxBuffer,(const char*)"+CGATT: 1");
Clear_Buffer();  
cnt = 0;//在循環之前先把計數的變量清零
while(strx==NULL)
{
    Clear_Buffer();        
    printf("AT+CGATT?\r\n");/
    delay_ms(700);
    strx=strstr((const char*)RxBuffer,(const char*)"+CGATT: 1“)
    delay_ms(1000);

    cnt++;//未返回或返回錯誤,變量都會在原有基礎上+1
    if(cnt > 10)//當變量的值大于指定的數,即可跳出循環,10可以改成其他的數字
    {
        break;
    }
}
回復

使用道具 舉報

19#
ID:822056 發表于 2020-10-10 10:06 | 只看該作者
可以嘗試下在循環中加個break;
回復

使用道具 舉報

20#
ID:486279 發表于 2020-10-10 14:44 | 只看該作者
strx!=null
回復

使用道具 舉報

21#
ID:653456 發表于 2020-10-11 12:47 | 只看該作者
加入一個超時跳出的標志位,若檢測不到數據就返回-1之類的標記。
回復

使用道具 舉報

22#
ID:828289 發表于 2020-10-11 16:12 | 只看該作者
可以加入一個變量來計數循環次數,次數超過給定值直接break跳出循環
回復

使用道具 舉報

23#
ID:828383 發表于 2020-10-11 17:04 | 只看該作者
你這個是你寫的算法有問題,模塊不返回正確數據肯定一直在while循環呀。你可以加一個跳出循環標志位。循環多少次后跳出循環噻。
回復

使用道具 舉報

24#
ID:342954 發表于 2020-10-11 17:15 | 只看該作者
用 break;
回復

使用道具 舉報

25#
ID:568565 發表于 2020-10-11 17:27 | 只看該作者
給個其他條件用break也能跳出
回復

使用道具 舉報

26#
ID:731309 發表于 2020-10-11 18:12 | 只看該作者
用break跳出,或者在里面用if else跳出即可
回復

使用道具 舉報

27#
ID:828434 發表于 2020-10-11 19:22 | 只看該作者

給個其他條件用break也能跳出
回復

使用道具 舉報

28#
ID:473159 發表于 2020-10-11 20:08 | 只看該作者
接收到了正確數據就跳出來,否則就跟你耗下去!你還是要看看你收到的數據有沒有正確解出來,可以試試發同一個數據是否能解開,后面再發不一樣的數據
回復

使用道具 舉報

29#
ID:683360 發表于 2020-10-11 23:22 | 只看該作者
你可以設置個條件  條件滿足退出循環
回復

使用道具 舉報

30#
ID:829000 發表于 2020-10-12 21:21 | 只看該作者
break;
回復

使用道具 舉報

31#
ID:829292 發表于 2020-10-13 14:30 | 只看該作者
你可以聲明一個變量num來記錄次數,運行一次while就+1,在寫個if語句,當這個變量超過你期望的值就是用break 跳出循環;在break之前輸出是這個邏輯跳出的。。
回復

使用道具 舉報

32#
ID:825447 發表于 2020-10-21 09:11 | 只看該作者
用for語句可以
eg for(n=0;n<10;n++)
     break ;
這樣也可以執行一段時間while語句

如果直接用break則會直接跳出while循環,那么你while也沒用了

當然你也可以在while里設置個參數
如while(n--)
{  n=50000  }
該語句也可執行一段時間

回復

使用道具 舉報

33#
ID:832903 發表于 2020-10-21 21:28 | 只看該作者
超時重來,或者可以goto label
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区电影 | 久在线视频播放免费视频 | 国产1区2区| 久久国产精品无码网站 | av影音 | 久久精品免费一区二区三 | 在线免费av观看 | 精品国产精品三级精品av网址 | 国产在线激情视频 | 国产成人av在线播放 | 逼逼视频| 天天草视频 | 日韩在线欧美 | 日韩精品一区二区三区四区视频 | 一级黄色av电影 | 国产成人精品免费视频大全最热 | 午夜精品一区二区三区免费视频 | 成人在线观看亚洲 | 在线观看国产 | 亚洲不卡在线观看 | 福利久久 | 2018国产精品 | 欧美一区二区三区视频 | 久久一区二区av | 久久久久成人精品亚洲国产 | 亚洲三级视频 | 中文字幕日韩欧美一区二区三区 | 福利视频网站 | 香蕉超碰| 亚洲人久久 | 久久精品在线播放 | 日韩一区二区三区在线视频 | 波多野结衣二区 | 亚洲欧美在线观看 | 成人午夜视频在线观看 | 日韩精品免费在线观看 | 九九综合九九 | 日韩欧美一级精品久久 | 欧美精品在线免费观看 | 国产精品视频二区三区 | 国产成人免费视频网站视频社区 |