我在C中使用strtok()来解析csv字符串。
我的示例字符串是:
str= "name1 secondname1 cin,name2 secondname2 cin"
我首先使用strtok和分隔符“,”然后我用“”分隔字符串。
char delims1[] = ",";
char delims2[] = " ";
char *result1 = NULL;
char *result2 = NULL;
result1 = strtok(str, delims1);
while ( result1 != NULL ) {
result2 = strtok(result1,delims2);
while ( result2 != NULL ) {
printf("%s\n" ,result2);
}
result1 = strtok(NULL, delims1);
}
预期结果是:
name1
secondname1
cin
name2
secondname2
cin
答案 0 :(得分:0)
欢迎使用StackOverflow。当您提出问题时,请尝试提出问题。
然而,在这种情况下,我只是假设你没有得到预期的输出。
问题是strtok
在内部存储了您上次呼叫的状态。因此,如果你混合两个不同的解析,那么你将遇到麻烦。
C库的Microsoft实现提供了strtok_s
,它允许您传入状态变量。如果您正在使用该编译器,则切换到使用该函数。否则你可能需要自己编写。
或者,您可以在一次传递中标记每个列并将指针存储在数组中。然后进行第二次传递并标记数组中的每个字符串。