繁体   English   中英

如何用c中的字符串拆分字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM