在c中,是否有标准库函数允许我通过指定起始索引和字符串的结束索引从给定字符串中提取子字符串。此外,子串在超级字符串中不会终止,即i。 e,获取指向子字符串开头的简单指针不足以提取子字符串。
当然我可以写一个函数来做我想做的事情,我只是想知道如果任何现有的库函数就足以达到我的目的。
答案 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
和两个值7
和4
,您可以获得从索引7
开始到索引{{1}结束的子字符串} - 1
(这是“子串”的正常语义,但您可以轻松更改此代码以包含end
字符。)