我有两个字符串:
prettyCoolString
CoolString
我想只得到pretty
部分。我查看了C字符串函数,但是我无法找到如何在prettyCoolString中找到CoolString的位置。
在Java中,我可以找到在PrettyCoolString中出现CoolString的位置,但是使用C,我所能做的就是返回指向它开始的地方的指针。我想找到这个位置,所以我可以从prettyCoolString中读取前x个字符。
我的意思是第一部分: 我想获得在第一个字符串出现在第一个字符串之前出现的第一个字符串的内容。
答案 0 :(得分:3)
尝试这样的事情:
char *source = "prettyCoolString";
char *find = "CoolString";
char dest[LENGTH];
char *p = strstr(source, find);
strncpy(dest, source, p - source);
答案 1 :(得分:2)
“我所能做的就是返回指向它开始的地方的指针” 那和长度告诉你几乎所有你需要的东西。
如果您不知道字符串的位置,请使用strstr()(或其中一个家族)搜索字符串。
strncpy()会将该部分复制到新字符串中。
答案 2 :(得分:0)
一旦你有一个指向“第一部分”之后的第一个字符的指针(你说你知道怎么做,大概是strstr
),你可以用几种方法将它提取到第一部分单独的字符串。例如:
char *substring(char *start, char *stop, char *dst, size_t size)
{
int count = stop - start;
if ( count >= --size )
{
count = size;
}
sprintf(dst, "%.*s", count, start);
return dst;
}