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 を返します
これは、渡す文字列の境界外のデータがランダムであり、ほとんどの場合ではないため'\0'
です。
範囲外の配列にアクセスしないでください。未定義の動作が発生します。独自の関数を作成する場合は、最初から開始する必要があります。
そして、何が問題なのstrlen
ですか?
代わりにこれを使用できます。もっとシンプルです
int string_length(char *str)
{
int i =0;
while(*str++) i++;
return i;
}
strlen()
から事前定義された関数を使用できます#include <string.h>