C语言 文件字符串结尾的分隔符



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

例如文件中的一行:"猫,狗,老鼠"

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

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

  • 空(表示不再有令牌)。

只是为了补充说明,引用手册页,

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

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

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

在 C 中,字符串以空 () 字符结尾。所以字符串的最后一部分实际上看起来像这样:

mouse

或者,在十六进制中:

6d 6f 75 73 65 00

但是,您无需执行任何特殊操作来处理以 null 结尾的字符串。任何标准库中的所有函数以及您会发现的几乎任何其他 C 代码都明白空字节结束字符串,因此拆分字符串、复制字符串、连接字符串等的函数都可以正常工作,而无需任何其他"字符串结尾"分隔符。

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

int main()
{
  char string[] = "cat,dog,mouse";
  const char s[2] = ",";
  char *token;
  token = strtok(string, s);
  while( token != NULL ) 
  {
     printf( " %sn", token );
     token = strtok(NULL, s);
   }
   return(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 会更改原始字符串。因此,您不能将其与字符串文字一起使用。

最新更新