[英]how to split a string with string in c
我有一个弦
char * str = 1000000sep0002006sep736794eesep13610015741sep-1seplocal
我想用“ sep”分割字符串,我需要像
String1 =1000000
String2 =0002006
String3 =736794ee
String4 =13610015741
String5 =-1
String6 =local
提前致谢
您可以通过重复调用strstr
来自己标记它。 一个简单的函数将其包装起来并安全地处理NULL的情况如何:
char *next_token( char *str, const char *tok )
{
if( str == NULL ) return NULL;
char *s = strstr(str, tok);
if( s == NULL ) return NULL;
*s = 0;
s += strlen(tok);
return s;
}
然后就是:
char *string1 = str;
char *string2 = next_token( string1, "sep");
char *string3 = next_token( string2, "sep");
// etc...
但是我更倾向于使用数组。
char * strings[6] = { str, 0 };
for( int i = 1; i < 6; i++ ) {
strings[i] = next_token( strings[i-1], "sep" );
}
[编辑]
当用户在注释中展开提及时,您不能像这样对字符串文字进行标记化。 如果需要对字符串文字进行操作,则需要标记化的字符串来提取子字符串而不修改原始字符串。 这是您的一项练习。 但是,如果要解决这个问题,只需将字符串设为char
数组即可:
char str[] = "1000000sep0002006sep736794eesep13610015741sep-1seplocal";
您可以修改它,因为它不是指向字符串文字的指针。 相反,它是使用字符串文字的副本初始化的数组。
好吧,我已经说了足够多的“字面量”了...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.