我有以下字符串:另一個語法分析器內的C字符串解析器
GET /index.html HTTP/1.0;;User-Agent: Wget/1.11.4;;Accept: */*;;Host: www.google.com;;Connection
我使用下面的代碼來解析每個元素:
while (parser != NULL){
printf ("%s\n",parser);
parser = strtok (NULL, ";;");
}
此輸出:
GET /index.html HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: www.google.com
Connection
現在我只需要獲得主機網址,在這種情況下,該網址是www.google.com。所以首先我想將它與其他東西分開。
要做到這一點,我把另一個語法分析器我以前的一個內像這樣:
while (parser != NULL){
char * pars = strtok (string,":");
while (pars != NULL) {
printf("%s\n", pars);
pars = strtok (NULL, ":");
}
parser = strtok (NULL, ";;");
}
的這個輸出是一些亂七八糟的東西。我不明白爲什麼......任何人都可以看到錯誤?謝謝
我知道'strtok'有這個問題,我不知道有一個可重入版本。很酷。 – Floris
請注意'strtok_r'不是C標準的(但POSIX)。 – Kninnug
@Kninnug這是真的。我添加了一個提示說明。謝謝! – dasblinkenlight