不使用strlen()函数,只用一行代码在c中查找字符串的长度?

时间:2017-02-12 10:27:02

标签: c arrays string

我想找到是否有办法在C中找到任何字符串的长度。 这是我的表现:

#include <stdio.h>
int main()
{
    char s[10] = "hello";
    int i , len = 0;
    for(i = 0; s[i] != '\0'; i++)
    {
        len++
    }
    printf("length of string is: %d" , len);
    return 0;
}

我想找到,如果有任何方法可以在一行代码中获取字符串的长度。

7 个答案:

答案 0 :(得分:8)

你可以简单地这样做:

for(len = 0; s[len] != '\0'; len++);

因此,在一行代码中,您将获得存储在 len 中的字符串长度。

答案 1 :(得分:3)

您可以删除s[len] != '\0';比较以缩短比例:

for(len=0;s[len];len++);

答案 2 :(得分:2)

您可以调用 strlen()函数来在一行中知道字符串的长度。 它返回一个大小值 size_t strlen(char *)

答案 3 :(得分:2)

这样做:

for(len=0;s[len];len++);

这会将长度存储在len

答案 4 :(得分:0)

如果你只想要一行,也可以这样:

while (s[len] != '\0') len++;

这只是另一种方式,但不是最令人满意的。

答案 5 :(得分:0)

最小的版本:

#include <stdio.h>

int main(void)
{
  char s[10] = "hello", *p = s;

  while(*p++); /* "counting" here */

  printf("The length of string '%s' is: %td" , s, p - s);
}

打印:

The length of string 'hello' is: 6

答案 6 :(得分:0)

我相信,这应该是最短的版本:

for(l=-1;s[++l];);

这是18个字节,所以这是一个非常好的代码 - 高尔夫答案。但是,我更喜欢更规范的

for(len = 0; s[len]; len++) ;

以实际代码。