Strtok( )是一個在string.h 內的function 用來傳入一個字串跟你要用來辨識分割的符號,strtok就會從字串頭開始一個一個收尋,找到要分割的符號就會把符號改成"\0",所以只要一直呼叫可以切割一個大字串成數個小字串。
EX:"I am Clover"=> 用空白分割一直呼叫(詳細請自己看宣告)切出三個字串為"I","am","Clover".
但是一旦你的來源是用下面方式直接建立的:
EX char *target = "I am clover.";
則會無法使用此Function,後來在Stack flow才找到原因!這個原因一般程式的書幾乎
不會提到!其原因是當我們使用 char *ptr去initial 一個字串時,系統會分配一個不能modify的空間放這個字串,但是由於strtok會去修改其記憶體內容因此會導致編譯過程不會有任何error但是Run的時候會出現Segment fault的問題。要注意喔 XD
EX:"I am Clover"=> 用空白分割一直呼叫(詳細請自己看宣告)切出三個字串為"I","am","Clover".
但是一旦你的來源是用下面方式直接建立的:
EX char *target = "I am clover.";
則會無法使用此Function,後來在Stack flow才找到原因!這個原因一般程式的書幾乎
不會提到!其原因是當我們使用 char *ptr去initial 一個字串時,系統會分配一個不能modify的空間放這個字串,但是由於strtok會去修改其記憶體內容因此會導致編譯過程不會有任何error但是Run的時候會出現Segment fault的問題。要注意喔 XD
留言
張貼留言