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

时间:2015-02-01 16:57:02

标签: c arrays string text strstr

我是新来的,请原谅我,如果我错过了什么。 我会直截了当地说明问题。 我想读一个.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并没有得到“'它从开始到下一个空格(在这种情况下......)获得整行。

很抱歉这样的初学者问题。 感谢您的时间和专业知识。

1 个答案:

答案 0 :(得分:1)

strstr只是在字符串中找到子字符串。你实际上并不想找到子串;你想找到一个在计算上更简单的角色。因此,如果您只想找到空格,则应使用strchr代替。

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

所有这些功能都在其联机帮助页中得到了很好的描述。 (man strchr; man strtok),您应该可以在自己的计算机上阅读。但如果您更喜欢使用互联网而非本地可用资源,则可以使用online