Char *ptr 與 strtok(char *des,const char *) 的問題。

Strtok( )是一個在string.h 內的function 用來傳入一個字串跟你要用來辨識分割的符號,strtok就會從字串頭開始一個一個收尋,找到要分割的符號就會把符號改成"\0",所以只要一直呼叫可以切割一個大字串數個小字串

EX:"I am Clover"=> 用空白分割一直呼叫(詳細請自己看宣告)切出三個字串為"I","am","Clover".

但是一旦你的來源是用下面方式直接建立的:

EX char  *target = "I am  clover.";

則會無法使用此Function,後來在Stack flow才找到原因!這個原因一般程式的書幾乎
不會提到!其原因是當我們使用 char *ptrinitial 一個字串時系統會分配一個不能modify空間放這個字串,但是由於strtok會去修改其記憶體內容因此會導致編譯過程不會有任何error但是Run的時候會出現Segment fault的問題。要注意喔 XD

留言