gpt4 book ai didi

c - 标记 c 中句子的单词

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:38 25 4
gpt4 key购买 nike

我正在尝试将一个句子标记为仅由一个空格分隔的单词。我需要从句子中获取单词,然后将它们写入订阅数组。这是我的作品:

void writeToStrArrayOneByOne(char words[10][20], char *sentence){

char *tokenPtr;
int j = 0;
int a,i;
tokenPtr = strtok(sentence," ");

while(tokenPtr != NULL){


a = strlen(tokenPtr);

for(i=0;i<a;i++){

words[j][i] = tokenPtr[i];
}
tokenPtr = strtok(NULL," ");
j++;

}

为了从 main 调试,我只用这个调用函数:

     char words[10][20];
char *sentence = "this is a token";
writeToStrArrayOneByOne(words,sentence);

但是它像 EOF 异常时一样卡住。感谢任何帮助,谢谢。

最佳答案

strtok() 修改它传递的字符串。你给它一个不能修改的字符串文字。

尝试:

char sentence[] = "this is a token";

这将使 sentence 成为可修改的字符数组。

另请记住,您复制标记的循环不会在每个条目的末尾放置空终止符 - 我怀疑您可能需要这些。也许试试:

strcpy(words[j], tokenPtr);

您应该考虑的其他事项包括:

  • 处理可能太长的 token
  • 得到一个包含太多标记的字符串
  • 如果 token 之间有一个以上的空格需要做什么 - strtok() 不会处理如果这对你很重要(我提到这一点只是因为在你的问题中你特别提到标记“仅由一个空格分隔”)

关于c - 标记 c 中句子的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10199416/

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