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 回答