gpt4 book ai didi

c - 将函数中的 token (strtok)存储在主数组中

转载 作者:行者123 更新时间:2023-11-30 16:53:22 24 4
gpt4 key购买 nike

我正在尝试创建一个函数来将句子拆分为单词并将单词存储到字符串数组中。如果我使用全局变量,它可以工作,字符串存储得很好并且工作完成,但是,当我尝试传递 main 中定义的数组时,它不会工作。

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"; 它就可以工作。token返回的是指针吗?我应该如何只获取其中存储的内容?我尝试了多种方法来做到这一点,但没有一个效果很好。欢迎每一个回复!

最佳答案

这里的问题是 strtok 返回指向它标记化的字符串的指针。您获得的指针将是指向 clone 数组的指针,该数组位于 split 函数内部。一旦split函数返回,指针将不再有效。

解决此问题的一种可能方法是不使用本地 clone 数组,而是将其放在函数外部,并将其作为第一个参数传入,并在调用中使用该参数strtok

关于c - 将函数中的 token (strtok)存储在主数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40868166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com