如何在C编程中查找一行中字符串的长度?

How to find the length of a string in one line in C programming?

这是一小段代码。

int len(char *str)
{
    int count = 0;
    while(*str++)
        count++;
    return count;
}

现在几天前,我发现了一个能够在一行中完成此操作的代码。基本上在 while 的条件下有一些单行代码,它负责查找字符串的长度并返回它。这是脏代码?是的,但它很有趣,所以我想我会尝试使用它,但我似乎不记得它到底是什么了。那么有没有办法在一行代码中做到这一点?

编辑: 很抱歉没有提到没有像 strlen 这样的库调用的事实。此功能必须是独立的。

您可以使用strlen(const char *s)


当然可以使用在线工具:

int len(char*str){int count=0;while(*str++)count++;return count;}

但它只会正常工作如果你的字符串是空终止的,如果不是,你会发现一些意想不到的结果...

如果不想使用strlenfor,可以考虑递归。

例如:

int len(const char * s)
{
    return (*s) ? (1 + len(s+1)) : 0;
}

解释:

使用

三元运算符 (?:) 而不是 if,如果使用指针 s(第一个字母)到达的数据不是 [=16=],我们计算该字符通过 +1 到字符串其余部分的 len

注:

s 没有指向任何内容(即 s == NULL)或 "string" 不是零终止时,函数失败。

唯一真正的解决方案是使用 strlen

也就是说,怎么样:

char *s = str; while(*s++);
size_t l = (s - str) - 1;

我没有把它放在一行中,因为删除换行符并不难,而且编译器不关心。