按位置索引提取子串的库函数

Ajo*_*joy 5 c string standard-library

在 c 中,是否有标准库函数允许我通过指定字符串的起始索引和结束索引从给定字符串中提取子字符串。此外,子字符串不是在超字符串中以 null 结尾,即。e、获得指向子串开头的简单指针不足以提取子串。

当然,我可以编写一个函数来做我想做的事,我只是想知道是否有任何现有的库函数可以满足我的目的。

Vin*_*Pii 5

如果你在C,我也许可以假设你的字符串是一个char *.

在这种情况下,如果您知道开始和结束索引,则可以memcpy将字符串的一部分添加到子字符串中。

例如,这段代码将打印"str"

int main(int argc, const char *argv[])
{
  const char *c = "the string";
  char *start = &c[4];
  char *end = &c[7];
  // Note the + 1 here, to have a null terminated substring
  char *substr = (char *)calloc(1, end - start + 1);
  memcpy(substr, start, end - start);
  printf("%s\n", substr);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

因此,给定一个字符串c和两个值,4and 7,您可以获得从 index 开始到 index4结束的子字符串7- 1(这是“子串”的正常语义,但您可以轻松更改此代码以包含该end字符)。