指定在char数组c中启动strlen()的位置

时间:2015-02-03 14:32:43

标签: c arrays string

我们说我有以下字符数组。我需要知道是否有办法获得数组中第二个字符串的长度。我知道我可以使用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
}

2 个答案:

答案 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
}