Tag: strtok

strtok分段错误

我试图理解为什么下面的代码片段给出了分段错误: void tokenize(char* line) { char* cmd = strtok(line,” “); while (cmd != NULL) { printf (“%s\n”,cmd); cmd = strtok(NULL, ” “); } } int main(void) { tokenize(“this is a test”); } 我知道strtok()实际上并没有对字符串文字进行标记,但在这种情况下, line直接指向字符串”this is a test” ,它在内部是一个char数组。 是否有任何令牌化line而不将其复制到数组中?

在c中使用strtok

我需要使用strtok读取名字和姓氏并将其分开。 如何在两个单独的char数组中存储我可以独立使用它们的名称? #include #include int main () { char str[] =”test string.”; char * test; test = strtok (str,” “); while (test != NULL) { printf (“%s\n”,test); test= strtok (NULL, ” “); } return 0; }

C中的strtok和strsep有什么区别

有人可以解释一下strtok()和strsep()之间有什么区别吗? 它们的优点和缺点是什么? 为什么我会选择一个而不是另一个。

需要知道何时使用strtok()在两个令牌分隔符之间没有数据出现

我试图标记一个字符串但我需要确切知道两个令牌之间何时没有数据。 例如,当标记下面的字符串“ a,b,c,,,d,e ”时,我需要知道’ d ‘和’ e ‘之间的两个空槽…我无法简单地使用strtok()找到它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前五个元素中,这是不希望的。 我需要每个字符的位置进入数组的特定索引:即如果两个字符之间缺少一个字符,则应按原样记录。