我们说我有以下字符数组。我需要知道是否有办法获得数组中第二个字符串的长度。我知道我可以使用strlen
,但这会给我第一个字符串的长度。
#include <stdio.h>
int main()
{
char greeting[20]={'P','H','O','N','E','\0','6','0','1','7','1','2','1','2','1','6','\0'};
int count;
count=strlen(greeting); // this returns the length of first string which is 5
}
答案 0 :(得分:6)
C中的有效字符串为空终止
在char数组中有2个空字符可能会导致很多问题,尤其是在使用内置函数时。
如果你真的想这样做
strlen(greeting + 1 + strlen(greeting));
strlen()
对空终止字符串起作用,如果只传递greeting
,那么将计算长度,直到遇到第一个空值并返回长度,所以现在需要长度来自第一个空后的字符,所以你应该如上所示计算。
答案 1 :(得分:1)
简单,通用,可读的方式:
size_t s_length [SUBSTRINGS];
const char* strp = greeting;
for(size_t i=0; i<SUBSTRINGS; i++)
{
s_length[i] = strlen(strp);
strp += s_length[i] + 1; // +1 to skip null termination
}