C:拆分一个字符串并选择最后一个元素

时间:2013-10-28 15:49:52

标签: c

分割字符串并选择最后一个元素的最有效方法是什么?

即。我们有一个字符串“www.google.com”

我想将此字符串拆分为“。”发生并选择最后一个元素“com”

3 个答案:

答案 0 :(得分:6)

您可以使用strrchr

const char * tld = strrchr("www.google.com", '.');
// tld now points to ".com"

如果找不到点,请不要忘记检查NULL。另请注意,它不会返回新字符串,只是指向原始字符串中最后一个'.'的指针。

答案 1 :(得分:1)

我想我会亲自做这样的事情,并跳过使用任何功能(虽然strrchr的某些版本可能实际上以这种方式工作,但我认为它们不一定得保证):< / p>

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;
  }
} 

答案 2 :(得分:0)

您可以按如下方式使用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);