将字符串中的每个子字符串存储在数组中

Store every substring from a string in an array

我是新来的,如果有什么遗漏请见谅。 我将开门见山。 我想读取一个 .txt 文件并将所有单词存储在一个单词数组中,所以我正在做的是:

int countWords(char *stringInput)
{
char const *p = stringInput;

int count;

printf("Counting Words\n");
for (count = 0; ; ++count) {
    p = strstr(p, " ");
    if (!p)
        break;

       printf("p: %s\n",p); 
       //Here I want to store every 'word' from the 'paragraph'
       strcpy(wordsArray,p);
    p++;
}
printf("There are %d words.\n",count);
  return count;
}

思路是stringInput就是段落。我用 printf 检查存储在 p 中的内容。我可以将每个单词存储在不同的数组中吗?如果可以,我怎样才能做到这一点? 我的问题是 strstr 不只是得到 'word' 它得到整行从开始到下一个 space(在这种情况下......)。

对于这样一个初学者的问题感到抱歉。 感谢您的时间和专业知识。

strstr只是在字符串中找到一个子串。您实际上并不想找到子字符串;你想找到一个在计算上更简单的字符。所以如果你只想找到 space,你应该使用 strchr

但是如果你想把字符串分割成单独的部分,你可能想要使用 strtok

所有这些功能在其联机帮助页中都有详细描述。 (man strchr; man strtok),你应该可以在你自己的机器上阅读。但如果您更喜欢使用 Internet 而不是本地可用资源,它们是可用的 online