當前位置:成語大全網 - 漢語詞典 - c語言字符串無法遍歷最後壹個字符,請大家幫忙。

c語言字符串無法遍歷最後壹個字符,請大家幫忙。

如果要計算z變量中的最後壹個結束符號0,那麽在循環中,

i++;if(s[I]= = ' \ 0 ')goto u;if(s[I]= ' \ 0 ')gotou;i++;

此外,您的代碼有壹些改進:

1.盡量不要在代碼中用goto跳轉。如果想跳出循環結束整個循環,使用break語句。同樣,如果想跳過這個循環進入下壹個循環,可以繼續語句。

2.if else執行效率不高,尤其是if判斷多,字符串長的時候。這裏如果簡單的使用判斷,在每個條件成立後增加壹個continue語句++直接跳轉到下壹個循環(後面的判斷就沒必要了)。

3.結束符號也可以直接用0表示。

下面的代碼(有不止壹個方法):

void StringCount(char* s)

{

int a = 0;//大寫字母的數量

int b = 0;//小寫字母的數量

int c = 0;//空格數

int d = 0;//位數

int z = 0;//其他字符的數量

int I =-1;

while(1)

{

++ I;

if(s[I]& gt;= ' A ' & amp& amps[I]& lt;= ' Z '){ a++;繼續;}

if(s[I]& gt;= ' a ' & amp& amps[I]& lt;= ' z '){ b++;繼續;}

if(s[I]= = ' '){ c++;繼續;}

if(s[I]& gt;= ' 0 ' & amp& amps[I]& lt;= ' 9 '){ d++;繼續;}

z++;

if(s[I]= = 0)break;//這裏結束符也包含在Z中,如果不想包含Z,Z和z++的位置就反過來了。

}

printf("%d %d %d %d %d ",a,b,c,d,z);

}