私は単語で文を分割し、単語を文字列の配列に格納する関数を作ろうとしています。グローバル変数を使用すると、文字列がうまく格納され、ジョブが完了します。ただし、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