【发布时间】:2013-10-28 15:49:51
【问题描述】:
分割字符串并选择最后一个元素最有效的方法是什么?
即我们有一个字符串“www.google.com”
我想将此字符串拆分为“。”发生并选择最后一个元素“com”
【问题讨论】:
-
@AShelly 再次阅读了这个问题。我正在寻找最有效的方法。
标签: c
分割字符串并选择最后一个元素最有效的方法是什么?
即我们有一个字符串“www.google.com”
我想将此字符串拆分为“。”发生并选择最后一个元素“com”
【问题讨论】:
标签: c
你可以使用strrchr:
const char * tld = strrchr("www.google.com", '.');
// tld now points to ".com"
不要忘记检查NULL,以防找不到点。另请注意,它不会返回新字符串,只是指向原始字符串中最后出现的'.' 的指针。
【讨论】:
r
strchr 的页面上吗?
我想我个人会做这样的事情,并跳过使用任何功能(尽管strrchr 的某些版本实际上可能以这种方式工作,但我认为它们不一定能保证):
char *findlast(char *str)
{ char *c = str, p = NULL; // assuming str is your input string
while (*c)
{ if (*c == '.')
p = c;
++c;
}
if (p)
{ // p points to the last occurrence of '.'
if (*(p+1)) // '.' is not last character
return p+1
else
// not sure what you want here - p+1 points to NULL and would be semantically
// correct, but basically returns a 0-length string; return NULL might be better
// for some use cases...
}
else
{ // p is NULL, meaning '.' did not exist in str
return p;
}
}
【讨论】:
你可以使用strtok如下
char str[] ="www.google.com";
char *token;
token = strtok (str,".");
char *lastToken ;
while (token != NULL)
{
lastToken = token ;
token = strtok (NULL, ".");
}
printf("last token - %s",lastToken);
【讨论】: