我試圖在嵌套循環(huán)中使用strtok()。但這并沒有給我想要的結(jié)果??赡苁且驗樗鼈兪褂孟嗤膬?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貢獻1725條經(jīng)驗 獲得超8個贊
是的,strtok()的確確實使用了一些靜態(tài)內(nèi)存來保存兩次調(diào)用之間的上下文。使用的重入版本strtok(),strtok_r()而不是,或者strtok_s()如果你正在使用VS(相同strtok_r())。
它有一個附加的上下文參數(shù),您可以在不同的循環(huán)中使用不同的上下文。
char *tok, *saved;
for (tok = strtok_r(str, "%", &saved); tok; tok = strtok_r(NULL, "%", &saved))
{
/* Do something with "tok" */
}

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