Dmi*_*tri 7 c string split strtok
好.例如,我在我的txt文件中有这一行:
1|1,12;7,19;6,4;8,19;2,2
如你所见,它有2个部分,由...分隔|.我没有问题获得两个部分,并1,12;7,19;6,4;8,19;2,2使用;分离器分离第二部分.但我确实有进一步分离的问题,,以获得每组的第一和第二个数字.
这是我目前的代码:
result = strtok(result, ";");
while(result != NULL ) {
printf("%s\n", result);
result = strtok(NULL, ";");
}
Run Code Online (Sandbox Code Playgroud)
它输出我:
1,12
7,19
6,4
8,19
2,2
太好了.但是,当我尝试"strtok"(我正在使用此方法进行拆分)时,如下所示:
result = strtok(result, ";");
while(result != NULL ) {
//printf("%s\n", result);
help = strtok(result, ",");
while(help != NULL) {
printf("<%s>", help);
help = strtok(NULL, ",");
}
result = strtok(NULL, ";");
}
Run Code Online (Sandbox Code Playgroud)
我只得到"<1>,<12>",就像这组数字中只有一组一样.我不明白其他数字在哪里.相反,输出应该是:<1>,<12>,<7>,<19>,<6>,<4>,<8>,<19>,<2>,<2>.有人可以给出一个解决方案,如何获得每组的EACH号码这组数字.也许有其他方法或我做错了:)
谢谢!
除了Neil指出的有关修改原始字符串的内容之外,该strtok()函数并非设计为以您描述的嵌套方式使用.您可能希望调查该strtok_r()功能,或strtok*完全避免使用该系列.
char *strtok(char *str, const char *delim); (来自手册页)
delim参数指定一组字符,用于分隔已解析字符串中的标记。调用者可以在解析同一字符串的连续调用中在delim中指定不同的字符串。
因此,使用;和,作为分隔符来获取所有数字。
//this will delimit result whenever ";" or "," is found
result = strtok(result, ";,");
while(result != NULL ) {
printf("%s\n", result);
result = strtok(NULL, ";,");
}
Run Code Online (Sandbox Code Playgroud)