下面附帶原碼:背景是在linux系統下利用GCC撰寫代碼,呼叫函式時出現死回圈,為了解回圈死在哪里,增加了一段列印num的陳述句,個人覺得呼叫函式陳述句會執行兩次,直到遇到3,程式進入死回圈;最終程式會輸出兩次結果后進入死回圈。但是結果進行編譯的結果是直接進入了死回圈,沒有任何結果輸出。
#include <stdio.h>
int str_fun(char *p);
int main(int argc,char *argv[])
{
char s[]="ho3llewrftridgeefvhtydv";
int n;
n=str_fun(s);
printf("n=%d\n",n);
return 0;
}
int str_fun(char *p)
{
int num=0;
while(*p !='\0'){
if(*p<='z' && *p>='a'){
num++;
printf("%d ",num);
p++;
}}
return num;
}
uj5u.com熱心網友回復:
把字串改為全域產量uj5u.com熱心網友回復:
我這個程式已經用指標指向了字串,這個不影響的,如果我把字串全部用字母,不出現數字的話,這個程式可以正常執行。現在的問題是我已經知道我的程式為甚么死回圈,在*p=3時,程式不會進入if陳述句里面,p++不會執行,從而出現了死回圈,這個我是了解的,但是前兩次的回圈是正常執行了的,個人感徑訓輸出兩次num的值,但是實際執時直接死回圈,沒有任何輸出。
uj5u.com熱心網友回復:
你這程式遇到不在a-z范圍內的字符就死回圈了,p++放if判斷外面uj5u.com熱心網友回復:
如果你再每次列印后加個sleep就可以列印出來轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/129999.html
標籤:非技術區
上一篇:求助大牛 雙攝像頭切換問題
