0

我在 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
4

1 回答 1

0

欢迎来到 StackOverflow。当您提出问题时,请尝试实际提出问题

但是,在这种情况下,我只是假设您没有得到预期的输出。

问题是strtok内部存储了您上次通话的状态。所以如果你混合两种不同的解析,那么你会遇到麻烦。

C 库的 Microsoft 实现提供了strtok_s允许您传入状态变量的功能。如果您使用的是该编译器,则切换到使用该函数。否则,您可能需要自己编写。

或者,您可以一次对每一列进行标记,并将指针存储在一个数组中。然后进行第二次传递并标记数组中的每个字符串。

于 2013-03-24T21:58:41.703 回答