如何在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 这样的库调用的事实。此功能必须是独立的。
当然可以使用在线工具:
int len(char*str){int count=0;while(*str++)count++;return count;}
但它只会正常工作如果你的字符串是空终止的,如果不是,你会发现一些意想不到的结果...
如果不想使用strlen
和for
,可以考虑递归。
例如:
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;
我没有把它放在一行中,因为删除换行符并不难,而且编译器不关心。
这是一小段代码。
int len(char *str)
{
int count = 0;
while(*str++)
count++;
return count;
}
现在几天前,我发现了一个能够在一行中完成此操作的代码。基本上在 while 的条件下有一些单行代码,它负责查找字符串的长度并返回它。这是脏代码?是的,但它很有趣,所以我想我会尝试使用它,但我似乎不记得它到底是什么了。那么有没有办法在一行代码中做到这一点?
编辑: 很抱歉没有提到没有像 strlen 这样的库调用的事实。此功能必须是独立的。
当然可以使用在线工具:
int len(char*str){int count=0;while(*str++)count++;return count;}
但它只会正常工作如果你的字符串是空终止的,如果不是,你会发现一些意想不到的结果...
如果不想使用strlen
和for
,可以考虑递归。
例如:
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;
我没有把它放在一行中,因为删除换行符并不难,而且编译器不关心。