用于文件字符串结尾的分隔符

时间:2015-04-21 06:11:28

标签: c string delimiter strtok

我正在尝试从文件中拆分逗号分隔的字符串。我可以用所有逗号分割字符串,但是如何获取字符串的最后一位?

例如文件中的一行:" cat,dog,mouse"

如何标记最后一部分"鼠标"从字符串?我应该使用什么分隔符,还是有其他方式?

4 个答案:

答案 0 :(得分:3)

您不需要使用任何单独的分隔符。如果您使用,作为strtok()的分隔符,通过解析相同的输入 string ,在每次迭代时,您将获得一个像

这样的标记
  • 小鼠
  • NULL(表示没有更多令牌)。

只是添加说明,引用手册页,

  

忽略字符串开头或结尾的分隔符字节

因此,即使您将字符串终止符null添加到分隔符字符串,它也不会对行为进行任何更改。

答案 1 :(得分:2)

  

如何标记最后一部分"鼠标"从字符串?

在C中,字符串以null(\0)字符终止。所以你的字符串的最后一部分看起来像这样:

mouse\0

或者,以十六进制:

6d 6f 75 73 65 00

但是你不需要做任何特别的事情来处理以null结尾的字符串。任何标准库中的所有函数以及几乎任何其他C代码都可以理解空字节结束字符串,因此分割字符串,复制字符串,连接字符串等的函数都可以正常工作而无需任何其他"字符串结尾"分隔符。

答案 2 :(得分:0)

,中使用strtok()作为分隔符。

int main()
{
  char string[] = "cat,dog,mouse";
  const char s[2] = ",";
  char *token;

  token = strtok(string, s);

  while( token != NULL ) 
  {
     printf( " %s\n", token );

     token = strtok(NULL, s);
   }

   return(0);
}

答案 3 :(得分:0)

最后一个分隔符是终止零。:)

以下是如何将字符数组拆分为子字符串

的示例
#include <stdio.h>
#include <string.h>

int main(void) 
{
    char s[] =  "cat, dog, mouse";

    char *p = strtok( s, ", " );

    while ( p != NULL )
    {
        puts( p );

        p = strtok( NULL, ", " );
    }

    return 0;
}

程序输出

cat
dog
mouse

我也用作分隔符空白字符。

考虑到strtok更改了原始字符串。所以你不能将它与字符串文字一起使用。