我試圖做一個函數來分離單詞中的一個句子並將這些單詞存儲到一個字符串數組中。如果我使用全局變量,它的工作原理是,字符串存儲很好,工作完成,但是,當我嘗試傳遞一個在main中定義的數組時,它將無法工作。從主要數組中存儲函數的標記(strtok)
void split(char sentence[], char *words[]){
unsigned char n= 0;
const char delim n= " ";
char clone[strlen(sentence)];
strcpy(clone, sentence);
char *token;
token= strtok(clone, delim);
while(token != NULL){
words[n++]= token;
token= strtok(NULL, delim);
}
words[n]= NULL; //Needed for future usage of the array;
}
int main(){
char *sentenceFromMain;
sentenceFromMain= "A BB CCC DDDD";
char *wordList[nrOfWords+1]; //I do have another function that counts words
split(sentenceFromMain, wordList);
exit(0);
}
如果我在這個功能,例如,words[0]= "A";
它的作品。 令牌是否返回指針?我應該如何獲取存儲在其中的內容?我嘗試了多種方式來做到這一點,但都沒有效果。歡迎每一個迴應!
您正在傳遞指向*字符串*的指針,但是'strtok'寫入正在檢查的字符串,這是非法的。 –
@WeatherVane OP使用_clone_。 – BLUEPIXY
'const char delim n =「」;' - >'const char * delim =「」;' – BLUEPIXY