標(biāo)題: 這個(gè)C語(yǔ)言程序怎么跳出這個(gè)WHILE循環(huán)? [打印本頁(yè)]

作者: 嗯哼11    時(shí)間: 2020-9-4 16:03
標(biāo)題: 這個(gè)C語(yǔ)言程序怎么跳出這個(gè)WHILE循環(huán)?
        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);
                }


怎么跳出這個(gè)while循環(huán)  模塊不返回正確數(shù)據(jù)他就一直卡在這了


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

要跳出這個(gè)while循環(huán)  必須要匹配到數(shù)據(jù)
作者: 圖銳工程    時(shí)間: 2020-9-7 08:41
while循環(huán)  
作者: 七禾頁(yè)    時(shí)間: 2020-10-9 08:33
break;
作者: 昆明路口賣提莫    時(shí)間: 2020-10-9 10:22
可以在死循環(huán)中加一個(gè)計(jì)數(shù),如果計(jì)數(shù)滿之前還是沒(méi)有跳出while(strx==NULL),可以直接用 break; 跳出
作者: jjwangxu2008    時(shí)間: 2020-10-9 11:38
goto 。。。。。。。。。。。。
作者: 1293113817    時(shí)間: 2020-10-9 17:33
用break打斷跳出循環(huán)
作者: atom1    時(shí)間: 2020-10-9 18:27
可以在函數(shù)內(nèi)加一個(gè)變量,然后自加,自加到一定數(shù)時(shí),由你決定是給出警告還是退出
作者: 菜鳥(niǎo)yc    時(shí)間: 2020-10-9 20:07
可以設(shè)計(jì)超時(shí)/超循環(huán)次數(shù)跳出循環(huán),使用break 語(yǔ)句
作者: iLike.    時(shí)間: 2020-10-9 20:38
這就是你設(shè)計(jì)的有問(wèn)題吧,你可以想,如果模塊不返回值,那你就到一個(gè)時(shí)間之后自己跳出來(lái)
作者: 540060348    時(shí)間: 2020-10-9 21:21
unsigned int cnt;//程序最開(kāi)始聲明一個(gè)計(jì)數(shù)的變量

printf("AT+CGATT?\r\n")
delay_ms(700);
strx=strstr((const char*)RxBuffer,(const char*)"+CGATT: 1");
Clear_Buffer();  
cnt = 0;//在循環(huán)之前先把計(jì)數(shù)的變量清零
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++;//未返回或返回錯(cuò)誤,變量都會(huì)在原有基礎(chǔ)上+1
    if(cnt > 10)//當(dāng)變量的值大于指定的數(shù),即可跳出循環(huán),10可以改成其他的數(shù)字
    {
        break;
    }
}
作者: 德斯佩爾    時(shí)間: 2020-10-10 10:06
可以嘗試下在循環(huán)中加個(gè)break;
作者: 趙杰趙杰    時(shí)間: 2020-10-10 14:44
strx!=null
作者: pmp    時(shí)間: 2020-10-11 12:47
加入一個(gè)超時(shí)跳出的標(biāo)志位,若檢測(cè)不到數(shù)據(jù)就返回-1之類的標(biāo)記。
作者: 25041    時(shí)間: 2020-10-11 16:12
可以加入一個(gè)變量來(lái)計(jì)數(shù)循環(huán)次數(shù),次數(shù)超過(guò)給定值直接break跳出循環(huán)
作者: 北冥丶漁    時(shí)間: 2020-10-11 17:04
你這個(gè)是你寫(xiě)的算法有問(wèn)題,模塊不返回正確數(shù)據(jù)肯定一直在while循環(huán)呀。你可以加一個(gè)跳出循環(huán)標(biāo)志位。循環(huán)多少次后跳出循環(huán)噻。
作者: hejianmin    時(shí)間: 2020-10-11 17:15
用 break;
作者: chenyinhu    時(shí)間: 2020-10-11 17:27
給個(gè)其他條件用break也能跳出
作者: 黃河有只雞    時(shí)間: 2020-10-11 18:12
用break跳出,或者在里面用if else跳出即可
作者: asd15455455    時(shí)間: 2020-10-11 19:22

給個(gè)其他條件用break也能跳出

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

如果直接用break則會(huì)直接跳出while循環(huán),那么你while也沒(méi)用了

當(dāng)然你也可以在while里設(shè)置個(gè)參數(shù)
如while(n--)
{  n=50000  }
該語(yǔ)句也可執(zhí)行一段時(shí)間


作者: kxdkxd    時(shí)間: 2020-10-21 21:28
超時(shí)重來(lái),或者可以goto label





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