我在 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
最佳答案
欢迎来到 StackOverflow。当您提出问题时,请尝试实际提出问题。
但是,在这种情况下,我将假设您没有获得预期的输出。
问题是 strtok
在内部存储您上次调用的状态。所以如果你混合两种不同的解析那么你就会遇到麻烦。
C 库的 Microsoft 实现提供了 strtok_s
,它允许您传入状态变量。如果您正在使用该编译器,请切换到使用该函数。否则您可能需要自己编写。
或者,您可以一次性标记每一列并将指针存储在数组中。然后进行第二遍并对数组中的每个字符串进行标记。
关于c - 对 csv 文件进行两次标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604395/