我試圖在嵌套循環(huán)中使用strtok()。但這并沒(méi)有給我想要的結(jié)果。可能是因?yàn)樗鼈兪褂孟嗤膬?nèi)存位置。我的代碼格式為:-char *token1 = strtok(Str1, "%");while(token1 != NULL ){ char *token2 = strtok(Str2, "%"); while(token2 != NULL ) { //DO SMTHING token2 = strtok(NULL, "%"); } token1 = strtok(NULL, "%"); // Do something more }
3 回答

qq_遁去的一_1
TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
是的,strtok()的確確實(shí)使用了一些靜態(tài)內(nèi)存來(lái)保存兩次調(diào)用之間的上下文。使用的重入版本strtok(),strtok_r()而不是,或者strtok_s()如果你正在使用VS(相同strtok_r())。
它有一個(gè)附加的上下文參數(shù),您可以在不同的循環(huán)中使用不同的上下文。
char *tok, *saved;
for (tok = strtok_r(str, "%", &saved); tok; tok = strtok_r(NULL, "%", &saved))
{
/* Do something with "tok" */
}

犯罪嫌疑人X
TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
strtok使用的是靜態(tài)緩沖區(qū)。在您的情況下,您應(yīng)該使用strtok_r。此功能正在使用用戶提供的緩沖區(qū)。
- 3 回答
- 0 關(guān)注
- 519 瀏覽
添加回答
舉報(bào)
0/150
提交
取消