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

Jac*_*ary -2 c string string-length

这是一小段代码。

int len(char *str)
{
    int count = 0;
    while(*str++)
        count++;
    return count;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Vol*_*And 5

如果您不想使用strlenfor,请考虑递归。

例如:

int len(const char * s)
{
    return (*s) ? (1 + len(s+1)) : 0;
}
Run Code Online (Sandbox Code Playgroud)

说明:

三元运算符(?:)来代替if,如果用指针到达数据s(第一个字母)不\0,我们通过计算该字符+1len字符串的其余部分。

注意:

s指向无内容(即s == NULL)或“字符串”不是零结尾时,函数将失败。

  • 好吧,无论如何,愚蠢的答案很明显表明应该在Code Golf上询问。 (2认同)