我正在尝试从文件中拆分逗号分隔的字符串。我可以用所有逗号分割字符串,但是如何获取字符串的最后一位?
例如文件中的一行:" cat,dog,mouse"
如何标记最后一部分"鼠标"从字符串?我应该使用什么分隔符,还是有其他方式?
答案 0 :(得分:3)
您不需要使用任何单独的分隔符。如果您使用,
作为strtok()
的分隔符,通过解析相同的输入 string ,在每次迭代时,您将获得一个像
只是添加说明,引用手册页,
忽略字符串开头或结尾的分隔符字节
因此,即使您将字符串终止符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更改了原始字符串。所以你不能将它与字符串文字一起使用。