我有一个像这样的字符串:a;b;c;d;ef;g;h;i;j1;2;3;4;5我想逐个元素解析它。我使用了嵌套的strtok函数,但是它只是分割第一行并使标记指针为null。我该如何克服呢?这是代码:token = strtok(str, "\n");while(token != NULL && *token != EOF){ char a[128], b[128]; strcpy(a,token); strcpy(b,a); printf("a:%s\n",a); char *token2 = strtok(a,";"); while(token2 != NULL) { printf("token2 %s\n",token2); token2 = strtok(NULL,";"); } strcpy(token,b); token = strtok(NULL, "\n"); if(token == NULL) { printf("its null"); }}输出:token 2 atoken 2 btoken 2 ctoken 2 dtoken 2 e
3 回答
慕容森
TA贡献1853条经验 获得超18个赞
曲折…… for
循环本质上是在发现位置加写NUL'\ 0' strtok()
的组合使用strchr()
。它仅在创建和剖析该行的副本时才有效;否则,您将必须strlen(line)
在循环的顶部进行调用并保存该长度,以将其添加到for
循环控件第三部分的行中。
- 3 回答
- 0 关注
- 681 浏览
添加回答
举报
0/150
提交
取消