我們有一個函數最長的,它返回由字母組成的最長的子字符串。例如:C - If/Else和指針返回錯誤的字符串
longest("112****hel 5454lllllo454")
將返回:lllllo
然而,當我運行程序似乎回到lllllo454。這裏是功能:
char *longest(char *s){
char *pMax = NULL;
int nMax = 0;
char *p = NULL;
int n = 0;
int inside = 0; //flag
while(*s!='\0'){
char c = *s;
if((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')){
if(inside == 0){
n = 1;
p = s;
inside = 1;
}
else
n++;
if(inside == 1){
if(n > nMax){
nMax = n;
pMax = p;
inside = 0;
}
}
}//end isLetter if
s++;
}
return pMax;
}
有什麼我沒有看到這裏...你們怎麼看?
或者將「int * nMax」作爲輸出參數。如果是這樣,最好在分配給* nMax之前進行空檢查 - 這是一個常見的「我不需要」的慣例。 – Steve314 2009-10-07 02:30:31