關於strtok的一點簡單認識

2021-06-23 01:55:58 字數 1182 閱讀 1288

之前寫過一段**,用strtok來解析一段檔案路徑,給他一層層的分開,

char *tmpstr = "\\dir\\dir1\\dir2\\test.txt";

char buffer[128] = ;

strcpy(buffer,tmpstr);

char *p = null;

p = strtok(buffer,"/\\");

int dirnum = 0;

while(p)

//memset(buffer,0,128);

//strcpy(buffer,tmpstr); //here is the secret

p = null;

p = strtok(buffer,"/\\");

while(p)

這個時候跑下來結果是啥:

000: dir

000: dir1

000: dir2

000: test.txt

001: dir

這就有點兒讓人納悶了,你不是應該是下面這樣嗎?

000: dir

000: dir1

000: dir2

000: test.txt

001: dir

001: dir1

001: dir2

001: test.txt

仔細看看buffer裡面的內容才發現,第一次解析路徑,迴圈呼叫strtok之後,裡面的內容已經變成了下面這樣:

\\dir\000dir1\000dir2\000test.txt

你這不是坑哥麼?

所以第二次迴圈呼叫strtok後,就只剩乙個dir列印出來了,

媽蛋,把那兩行注釋的:

p = strtok(null,"/\\");

} //memset(buffer,0,128);

//strcpy(buffer,tmpstr); //here is the secret

p = null;

p = strtok(buffer,"/\\");

memset(buffer,0,128)和strcpy(buffer,tmpstr)取消注釋就好了,

把buffer裡面內容清空在寫一次,唉,想當初這個bug可是解了好久呀,大半天呢。

關於團隊合作的一點認識

我覺得一些 不知道到底有多少,本人遇到基本都是如此 工作了幾年的開發人員,都很難融入乙個新的團隊。一般剛進新公司首先就是提出自己很多看法,無論你講什麼,都會把自己原來的經歷講一遍,然後告訴你 有問題 比較不喜歡這點 然後就是問什麼用sourcesafe而不用svn,為什麼用vs2008而不用vs20...

android 關於紅外控制一點認識。

前提,android手機支援紅外遙控功能 一 所用到的裝置是 logic analyzer分析儀 有售,他提供紅外解碼的軟體,能清楚的知道某個控制指令的的0 1 邏輯 1 是 0.56ms 1.68ms 邏輯 0 是0.56ms 0.56ms 通過紅外解碼軟體所畫出的圖可以知道,圖在下面。二 美的空...

關於C 引用型別一點認識

引用型別可以和指標一樣指向某個變數,但兩者在使用的時候還是有許多區別,1.宣告乙個引用型別後,一定要給他賦值,否則編譯通不過,特別是在類中,如果有引用成員變數時,一定要在建構函式的初始化列表中初始化,例如 class foo private int var foo f error,沒有初始化引用變數...