我正在尝试对字符串进行分词,但我需要知道在两个标记之间没有数据的确切时间。例如,在对以下字符串"a,b,c,,,d,e
"进行分词时,我需要知道在 'd
' 和 'e
' 之间的两个空槽...但我无法仅使用strtok()
找到这些信息。我的尝试如下:
char arr_fields[num_of_fields];
char delim[]=",\n";
char *tok;
tok=strtok(line,delim);//line contains the data
for(i=0;i<num_of_fields;i++,tok=strtok(NULL,delim))
{
if(tok)
sprintf(arr_fields[i], "%s", tok);
else
sprintf(arr_fields[i], "%s", "-");
}
使用上述代码执行前面提到的示例,将字符a、b、c、d、e放入数组arr_fields
的前五个元素中是不可取的。我需要每个字符的位置进入数组的特定索引中:即如果在两个字符之间缺少一个字符,则应按原样记录。
strtok()
被设计成忽略标记分隔符的重复,并将其删除。因此,如果您需要了解相邻的标记分隔符,或者需要知道哪个分隔符标记了一个标记的结尾,您不能使用strtok()
来完成这项工作。 - Jonathan Leffler