欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 這個C語言程序怎么跳出這個WHILE循環? [打印本頁]

作者: 嗯哼11    時間: 2020-9-4 16:03
標題: 這個C語言程序怎么跳出這個WHILE循環?
        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循環  模塊不返回正確數據他就一直卡在這了


作者: li25    時間: 2020-9-4 17:56
要跳出這個while循環  必須要匹配到數據
作者: hcfat51h    時間: 2020-9-4 18:33
加個超時唄,循環N次后就跳出;
作者: 無敵小杰杰    時間: 2020-9-4 20:55
用break跳出循環
作者: 幻劍心    時間: 2020-9-4 21:50
當RxBuffer字符串中能夠找到 +CGATT: 1 的時候,才能跳出循環。
感覺Clear_Buffer();  的位置有點問題。
如果Clear_Buffer(); 是清空RxBuffer的話,那么應該把Clear_Buffer(); 放到delay_ms(1000);之后。
這個應該是一個文件或者文件名查找之類的程序的一部分。
作者: 梁廷明    時間: 2020-9-5 09:19
strx==NULL收到空格,接受數據完畢就退出while循環
作者: 3319702068    時間: 2020-9-5 14:00
要跳出這個while循環  必須要匹配到數據
作者: adject    時間: 2020-9-6 22:42
while((strx==NULL)&&(time != 0){time--;}
作者: 跟愛的感覺走    時間: 2020-9-7 08:15

要跳出這個while循環  必須要匹配到數據
作者: 圖銳工程    時間: 2020-9-7 08:41
while循環  
作者: 七禾頁    時間: 2020-10-9 08:33
break;
作者: 昆明路口賣提莫    時間: 2020-10-9 10:22
可以在死循環中加一個計數,如果計數滿之前還是沒有跳出while(strx==NULL),可以直接用 break; 跳出
作者: jjwangxu2008    時間: 2020-10-9 11:38
goto 。。。。。。。。。。。。
作者: 1293113817    時間: 2020-10-9 17:33
用break打斷跳出循環
作者: atom1    時間: 2020-10-9 18:27
可以在函數內加一個變量,然后自加,自加到一定數時,由你決定是給出警告還是退出
作者: 菜鳥yc    時間: 2020-10-9 20:07
可以設計超時/超循環次數跳出循環,使用break 語句
作者: iLike.    時間: 2020-10-9 20:38
這就是你設計的有問題吧,你可以想,如果模塊不返回值,那你就到一個時間之后自己跳出來
作者: 540060348    時間: 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;
    }
}
作者: 德斯佩爾    時間: 2020-10-10 10:06
可以嘗試下在循環中加個break;
作者: 趙杰趙杰    時間: 2020-10-10 14:44
strx!=null
作者: pmp    時間: 2020-10-11 12:47
加入一個超時跳出的標志位,若檢測不到數據就返回-1之類的標記。
作者: 25041    時間: 2020-10-11 16:12
可以加入一個變量來計數循環次數,次數超過給定值直接break跳出循環
作者: 北冥丶漁    時間: 2020-10-11 17:04
你這個是你寫的算法有問題,模塊不返回正確數據肯定一直在while循環呀。你可以加一個跳出循環標志位。循環多少次后跳出循環噻。
作者: hejianmin    時間: 2020-10-11 17:15
用 break;
作者: chenyinhu    時間: 2020-10-11 17:27
給個其他條件用break也能跳出
作者: 黃河有只雞    時間: 2020-10-11 18:12
用break跳出,或者在里面用if else跳出即可
作者: asd15455455    時間: 2020-10-11 19:22

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

作者: yoxi    時間: 2020-10-11 20:08
接收到了正確數據就跳出來,否則就跟你耗下去!你還是要看看你收到的數據有沒有正確解出來,可以試試發同一個數據是否能解開,后面再發不一樣的數據
作者: 13317970316    時間: 2020-10-11 23:22
你可以設置個條件  條件滿足退出循環
作者: 花開丿    時間: 2020-10-12 21:21
break;
作者: nervouszx    時間: 2020-10-13 14:30
你可以聲明一個變量num來記錄次數,運行一次while就+1,在寫個if語句,當這個變量超過你期望的值就是用break 跳出循環;在break之前輸出是這個邏輯跳出的。。
作者: 上進求學    時間: 2020-10-21 09:11
用for語句可以
eg for(n=0;n<10;n++)
     break ;
這樣也可以執行一段時間while語句

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

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


作者: kxdkxd    時間: 2020-10-21 21:28
超時重來,或者可以goto label





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1