【问题标题】:Library function to extract substring by position index按位置索引提取子字符串的库函数
【发布时间】:2014-12-10 04:00:27
【问题描述】:

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

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

【问题讨论】:

  • 不,没有标准函数。
  • 如果你确定源字符串中没有 null 你可以使用 char *strncpy(char *dest, const char *src, size_t n) 最多复制src 指向的字符串中的 n 个字符到 dest。

标签: c string standard-library


【解决方案1】:

如果你在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;
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2012-06-24
    • 2015-03-15
    • 2014-04-22
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多