如何在C中使用'&'
將字符串拆分爲令牌?如何將字符串拆分爲C中的標記?
回答
char *token;
char *state;
for (token = strtok_r(input, "&", &state);
token != NULL;
token = strtok_r(NULL, "&", &state))
{
...
}
我會做這樣的事情(使用strchr()
):
#include <string.h>
char *data = "this&&that&other";
char *next;
char *curr = data;
while ((next = strchr(curr, '&')) != NULL) {
/* process curr to next-1 */
curr = next + 1;
}
/* process the remaining string (the last token) */
strchr(const char *s, int c)
返回一個指向的c
的下一個位置s
,或NULL
如果c
ISN」 t在s
中找到。
您可能能夠使用strtok()
,但是,我不喜歡strtok()
,因爲:
- 它修改字符串被標記化,所以它不會對文本字符串的工作,或者是不是很當你想保留字符串用於其他目的時很有用。在這種情況下,您必須首先將字符串複製到臨時文件中。
- 它合併了相鄰的分隔符,所以如果您的字符串是
"a&&b&c"
,返回的標記是"a"
,"b"
和"c"
。請注意,在"a"
之後沒有空標記。 - 它不是線程安全的。
我想這也取決於C的實現。在我的系統中,當我調用strtok()時,字符串本身沒有被修改。其實我甚至都沒有看到它是如何的。畢竟它只是產生指向字符串內不同標記開始的指針。 – 2010-01-19 10:43:20
Cees Meijer:'strtok()* *修改參數字符串 - 分隔符被替換爲'\ 0',以便返回的字符串被正確終止。 – caf 2010-01-19 10:58:52
'strtok' *具有*修改字符串,如果它必須符合標準。從C標準:*如果找到這樣一個字符,它將被空字符覆蓋,這會終止當前標記*。這非常明確。 http://opengroup.org/onlinepubs/009695399/functions/strtok.html。你可以在'strtok()'不修改字符串的地方發佈代碼嗎? – 2010-01-19 10:59:42
您可以使用strok()函數,如下例所示。
/// Function to parse a string in separate tokens
int parse_string(char pInputString[MAX_STRING_LENGTH],char *Delimiter,
char *pToken[MAX_TOKENS])
{
int i;
i = 0;
pToken[i] = strtok(pInputString, Delimiter);
i++;
while ((pToken[i] = strtok(NULL, Delimiter)) != NULL){
i++;
}
return i;
}
/// The array pTokens[] now contains the pointers to the start of each token in the (unchanged) original string.
sprintf(String,"Token1&Token2");
NrOfParameters = parse_string(String,"&",pTokens);
sprintf("%s, %s",pToken[0],pToken[1]);
- 1. 我如何將一個字符串拆分爲'&'的標記
- 2. 如何將字符串拆分爲有意義的標記?
- 3. C#拆分字符串 - 將字符串拆分爲數組
- 4. C++如何將字符串拆分爲字符串和整數?
- 5. 如何將字符串拆分爲java中的子字符串
- 6. 如何將字符串拆分爲iOS中的子字符串?
- 7. 將字符串拆分爲數組C
- 8. C#將字符串拆分爲Excel
- 9. 將字符串拆分爲數組C++
- 10. 將字符串拆分爲字符串
- 11. 將字符串拆分爲字符串
- 12. 如何將字符串拆分爲列
- 13. 如何在iOS中將字符串拆分爲子字符串
- 14. 將字符串拆分爲「。」
- 15. 將字符串拆分爲「|」
- 16. 使用目標c將字符串拆分爲兩部分
- 17. 如何在C#中拆分字符串
- 18. 如何將字符串拆分爲等長的子字符串?
- 19. 如何將字符串拆分爲重複的子字符串
- 20. 如何在c#中將字符串拆分爲多個字符串?
- 21. Tokenize或將字符串拆分爲文本和Html標記項
- 22. 按特定標記將HTML字符串拆分爲數組
- 23. 將lua字符串拆分爲字符
- 24. php將字符串拆分爲字符
- 25. PatternSyntaxException將字符串拆分爲「*」字符
- 26. 將C中的字符串拆分爲不同的部分
- 27. 將字符串拆分爲幾個子字符串C
- 28. 將字符串拆分爲子字符串c
- 29. C++將字符串拆分爲字符串數組
- 30. C++將整個字符串拆分爲另一個字符串
http://stackoverflow.com/questions/266357/tokenizing-strings-in-c – 2010-01-19 07:32:05
貌似這個問題是關於拆分一個字符串(雖然問題是低的細節,稱「不工作」)。這可能或不可能是OP想要的。我們應該給他一個解釋的機會。字符串是否被分割爲文字字符串,還是隻讀? – 2010-01-19 07:38:56