1樓:星月小木木
strtok函式會破壞被分解字串的完整,呼叫前和呼叫後的s已經不一樣了。如果要保持原字串的完整,可以使用strchr和sscanf的組合等。
strtok是乙個執行緒不安全的函式,因為它使用了靜態分配的空間來儲存被分割的字串位置
執行緒安全的函式叫strtok_r,ca。
運用strtok來判斷ip或者mac的時候務必要先用其他的方法判斷'.'或':'的個數,因為用strtok截斷的話,比如:
"192..168.0...
8..."這個字串,strtok只會擷取四次,中間的...無論多少都會被當作乙個key。
函式strtok儲存string中標記後面的下乙個字元的指標,並返回當前標記的指標。
後面再呼叫strtok時,第乙個引數為null,繼續將string標記化。null引數表示呼叫strtok繼續從string中上次呼叫 strtok時儲存的位置開始標記化。
如果呼叫strtok時已經沒有標記,則strtok返回null。注意strtok修改輸入字串,因此,如果呼叫strtok之後還要在程式中使用這個字串,則應複製這個字 符串。
2樓:帥得有點壞
你的問題讓我研究了一晚上,
也沒弄明白,哎,
這個**太神奇了。
不知道用什麼標記了第乙個字元指標的起始位置。
3樓:匿名使用者
原型char *strtok(char *s, char *delim);
編輯本段功能
分解字串為一組字串。s為要分解的字串,delim為分隔符字串。
編輯本段說明
首次呼叫時,s指向要分解的字串,之後再次呼叫要把s設成null。 strtok在s中查詢包含在delim中的字元並用null('')來替換,直到找遍整個字串。 char * p = strtok(s,";"); p = strtok(null,";"); 在呼叫的過程中,字串s被改變了,這點是要注意的。
編輯本段返回值
從s開頭開始的乙個個被分割的串。當沒有被分割的串時則返回null。 所有delim中包含的字元都會被濾掉,並將被濾掉的地方設為一處分割的節點。
c語言中函式指標用法,C語言中函式指標用法
函式在記憶體中有一個物理位置,而這個位置是可以賦給一個指標的。一零點函式的地址就是該函式的入口點。因此,函式指標可被用來呼叫一個函式。函式的地址是用不帶任何括號或引數的函式名來得到的。這很類似於陣列地址的得到方法,即,在只有陣列名而無下標是就得到陣列地址。怎樣說明一個函式指標變數呢 為了說明一個變數...
c語言strcpy用法,c語言中strcpy函式幹什麼用的
飛喵某 2 接著定義兩個陣列a和b,程式經過strcpy函式處理,將b陣列中的字串複製到a陣列中,最後列印出結果 3 最後來看看效果。開啟除錯視窗,輸入一句話,按下回車輸出了這句話。以上就是c語言中strcpy的用法 例如 定義一個字串char a 20 和一個字串c i am a teacher ...
c語言中char的用法,C語言中char的用法
會飛的小兔子 include intmain inti charc 定義乙個char型別的變數。c a 賦值 for i 0 i 26 i printf c c 輸出乙個字元用 c,c charc增加1,依次可以得到 abcdef。zprintf n if c z printf stillasmal...