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这样的事实。此功能必须是自包含的。
如果您不想使用strlen和for,请考虑递归。
例如:
int len(const char * s)
{
return (*s) ? (1 + len(s+1)) : 0;
}
Run Code Online (Sandbox Code Playgroud)
说明:
三元运算符(?:)来代替if,如果用指针到达数据s(第一个字母)不\0,我们通过计算该字符+1到len字符串的其余部分。
注意:
当s指向无内容(即s == NULL)或“字符串”不是零结尾时,函数将失败。