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 ...