库函数通过位置索引提取子串

时间:2014-10-15 07:04:21

标签: c string standard-library

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

当然我可以写一个函数来做我想做的事情,我只是想知道如果任何现有的库函数就足以达到我的目的。

1 个答案:

答案 0 :(得分:2)

如果您在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

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