1
int strlength(const char *myStr){
    //variable used for str length counter
    int strlength = 0;
    //loop through string until end is reached. Each iteration adds one to the string length
        while (myStr[strlength] != '\0'){
            putchar(myStr[strlength]);
            strlength++;
        }

    return strlength;
}

なぜこれが意図したとおりに機能しないのですか?文字列の長さを知りたいだけです。

4

4 に答える 4

4

別の回答へのコメントから:

文字列を読み取るためにfgetsを使用しています。入力した文字列が正しく保存されていることを確認しました

その場合、末尾の改行が格納されているため、関数は次のように計算します。

strlength("hello\n")

コードは正しいです。渡したと思われる入力を渡さなかっただけです。

于 2013-01-26T19:35:41.000 に答える
3

より信頼性の高いバージョン:

size_t strlength(const char * myStr)
{
    return strlen(myStr);
}
于 2013-01-26T19:30:22.373 に答える
2

これも試すことができます:-

int string_length(char *s)
{
   int c = 0;

   while(*(s+c))
      c++;

   return c;
}
于 2013-01-26T19:29:45.307 に答える
0

fgets()と末尾の削除について心配する必要はありません\n

while (myStr[strlength] != '\0'){
            putchar(myStr[strlength]);
            strlength++; //When mysStr[strlength] == \0, this line would have already incremented by 1
}

クイックフィックス:

return (strlength-1);//This will return correct value.

より良いアプローチ:

int strlen(const char *s)
{
   char *str=s;
   while(*str)
   {
      str++;
   }
   return (s-str);
}
于 2013-01-26T19:37:18.763 に答える