c语言 将输入的字符串按照空格分割 50
c语言将输入的字符串按照空格分割计算其中单词出现的个数比如输入iloveclovec输出:i出现1次love出现2次c出现2次...
c语言 将输入的字符串按照空格分割计算其中单词出现的个数 比如输入
i love c love c
输出:
i 出现 1次
love 出现 2次
c出现 2次 展开
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;
}
}
//最后输出
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询