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

c语言将输入的字符串按照空格分割计算其中单词出现的个数比如输入iloveclovec输出:i出现1次love出现2次c出现2次... c语言 将输入的字符串按照空格分割计算其中单词出现的个数 比如输入
i love c love c
输出:
i 出现 1次
love 出现 2次
c出现 2次
展开
 我来答
laobishi080
2018-03-06 · TA获得超过760个赞
知道小有建树答主
回答量:164
采纳率:87%
帮助的人:45.3万
展开全部

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;
    }
}
//最后输出
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式