Я пытаюсь сделать функцию, чтобы разбить предложение на слова и сохранить слова в массив строк. Если я использую глобальную переменную, она работает, строки сохраняются красиво, и задание выполняется, однако, когда я пытаюсь передать массив, определенный в основном, он не будет работать.Хранение токена (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