strtok巢狀使用的解決方法

2021-07-06 05:05:41 字數 853 閱讀 3431

token=strtok(preadbuff,"\n");

while(token!=null)

上面的**期望實現的功能

是首先以換行符

「\n」

分割字串,再以每一行的「,

」號分割字串,但執行時發現,這個**只能實現一行字元的分割,其它行的都沒有處理

原因是:

strtok

是不可以巢狀呼叫的!

我推測,

strtok

中是通過乙個靜態變數來實現字串的記錄的,這就是可以通過

null

來進行第二次操作的原因。

你巢狀呼叫後,那個靜態變數被修改了,當然無法進行下乙個呼叫了!

解決的方法是自己實現乙個

strtok

函式,這樣在使用靜態變數的時候就不會有衝突,修改後的**如下:

token=mystrtok(preadbuff,"\n");

while(token!=null)

而mystrtok

的實現如下:

char * mystrtok;

(全域性變數)

char * mystrtok( char * s,const char * ct)

sbegin += strspn(sbegin,ct);//

返回字串中第乙個不在指定字串中出現的字元下標

if (*sbegin == '\0')

send = strpbrk(sbegin, ct);

if(send && *send != '\0')

*send++ = '\0';

mystrtok = send;

return (sbegin);

表單巢狀問題的解決方法

在html中,表單form是不能夠巢狀使用的,例如 name form1 name form2 form form 這樣是不合法的,那麼如果我們遇到需要用到兩個表單的情況應該怎麼辦呢?解決的方法很簡單,合併兩個表單,動態改變表單提交位置。表單form中的action為空,然後在js 中改變actio...

yum 無法使用的解決方法

有一台伺服器,準備使用yum安裝乙個軟體包,結果報錯,yum list,yum clean,都不能正常使用 查詢了很多資料,說是python版本的問題,結果檢視也沒有發現問題 錯誤如下 yum list traceback most recent call last file usr bin yum...

避免使用swap的方法,及解決方法

1 這是乙個傾向性的值,並不能完全避免 swap 的使用。該值的範圍是 0 100 預設值是 60,當 時,會最大可能性盡量避免使用 swap。2 innodb flush method 設為o direct innodb flush method 的選項有 fdatasync o dsync o ...