c语言 将输入的字符串按照空格分割

c语言 将输入的字符串按照空格分割计算其中单词出现的个数 比如输入
i love c love c
输出:
i 出现 1次
love 出现 2次
c出现 2次

strtok函数

网页链接

char str[] ="i love c love c";

const char * split = " ";
char * p;
p = strtok (str,split);
while(p!=NULL) {
printf ("%s\n",p);
p = strtok(NULL,split);
}

这么循环

说下我的逻辑,不一定最优

先弄个结构体struct里面有一个char*和一个int

再建个struct的数组

在每次循环对比之前获得的struct数组中是否含有相同的字符串

有就计数器+1

没有就在数组中为null的地方加上一个成员为这个字符串和计数为1的struct

循环结束时遍历struct数组

好久没写C了,怕给你的代码有bug,就写思路把

追问

strok函数我知道 我能把字符串按照空格分割成一组组词语 但是怎么计数啊?

追答

用struct,字符串和数字存在一起,我上面提到了,初始创建的时候赋值1,每遇到相同的就+1.比如

char *str = "i love c love c";
struct A{
    char* string;
    int count;
}word[100];

const char *kwd = " "
char * p;
int i;
int ifsame = 0;
p = strtok (str,kwd);
while(p){
    for(i = 0;word[i].string[0];i++){
        if(strcmp(word[i].string,p){
            ifsame = 1;
            break;
        }
    }
    if(ifsame == 1){
        word[i].count++;
        ifsame = 0;
    }
    else{
        word[i].string = p;
        word[i].count = 1;
    }
}
//最后输出

温馨提示:答案为网友推荐,仅供参考
相似回答