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;
}
为什么这不会按预期工作?我只是想找到一个字符串的长度。
答案 0 :(得分:4)
来自对另一个答案的评论:
我使用fgets读取字符串。我已经检查以确保键入的字符串存储了correclty
在这种情况下,存储了一个尾随换行符,因此您的函数计算
strlength("hello\n")
代码是正确的,你只是没有传递你认为通过的输入。
答案 1 :(得分:3)
更可靠的版本:
size_t strlength(const char * myStr)
{
return strlen(myStr);
}
答案 2 :(得分:2)
您也可以尝试: -
int string_length(char *s)
{
int c = 0;
while(*(s+c))
c++;
return c;
}
答案 3 :(得分: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);
}