我有一個像這樣的字符串: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 關注
- 717 瀏覽
添加回答
舉報
0/150
提交
取消