-3
int string_length(char str[])
{
int i;
for(i=200; i>=0; i--)
{
  //printf("%c \n",str[200]);
   printf("%d",i);
  if(str[i] !=NULL)
 {
    return(i);
   }
  }
}

文字列が :eee rrr の場合、適切な文字列サイズを返したい: 7 を返す必要がありますが、これは常に 200 を返します

4

4 に答える 4

2

これは、渡す文字列の境界外のデータがランダムであり、ほとんどの場合ではないため'\0'です。

範囲外の配列にアクセスしないでください。未定義の動作が発生します。独自の関数を作成する場合は、最初から開始する必要があります。

そして、何が問題なのstrlenですか?

于 2013-05-28T13:50:46.417 に答える
0

代わりにこれを使用できます。もっとシンプルです

int string_length(char *str)
{
    int i =0;
    while(*str++) i++;
    return i;
}

strlen()から事前定義された関数を使用できます#include <string.h>

于 2013-05-28T13:50:36.360 に答える