在计算子字符串的长度时,2 的含义是什么"(right-left+2)"?

  • 本文关键字:是什么 right-left+2 字符串 计算 c
  • 更新时间 :
  • 英文 :


我正在用C语言设计一个程序来检测令牌。

我在第四行感到困惑。(right-left+2)做什么?

char* sub_string(char* str, int left, int right)
{
int i;
char* sub_str = (char*) malloc(sizeof(char)*(right-left+2)); /* 4th line */
}

在这种情况下,right-left+2将是right-left+1+1
其中righ-left是从左到右的长度,但不计算左的长度。因此,一个+1。
另一个+1用于生成一个额外的空间字符,很可能用于添加0终止。

顺便说一下,该函数缺少一个干净的return语句。

例如(感谢David C.Ranking的示例想法("more this than that"中的"this"

more this than that
0    5  8

't'处于left5,'s'处于right8。"this"的长度显然是4(不包括不存在的0终止子(。但8-5只是3。因此,使用一个+1来包含额外的字符(通过我的计数,'t'丢失了…(

如果该子字符串要通过指向mallocated内存的指针返回,我想这就是函数(缺少的(其余部分应该做的;它应该在mallocated内存中包含0终止符。这需要对内存的另一个字符进行mallocated;通过使用第二CCD_ 15。

最新更新