在C中的#中拆分字符串

我有一个像这样的字符串:

char *message = "12#34#56#78#90" 

我想得到:

 a = "12" b = "34" c = "56" d = "78" d = "90" 

谁能给我一个好方法?

使用strtok() 。 请注意,即使这是C ++文档,该函数也存在于C.请特别注意在后续调用中使用NULL来获取下一个标记。

 char label = 'a'; char *token = strtok(message, "#"); while (token != NULL) { printf("%c = \"%s\"\n", label++, token); token = strtok(NULL, "#"); } 

输出:

 a = "12" b = "34" c = "56" d = "78" e = "90" 

请参见http://ideone.com/xk1uO

标准库中的strtok函数执行此操作,您可以循环提取所有标记的字符串。

strtok_r它像strtok但更安全。 strtok已被弃用。

让我们使用strsep – 不需要通过传入NULL来依赖静态变量。

 char *string; // It holds "12#34#56"; (cannot be string literal) char *token = NULL; while ((token = strsep(&string, "#"))) { printf("%s\n", token); }