c语言标签计数简单运用

喵喵在开发一个新式的社交网络,现在她想要写一个模块来处理文本并计算其中不同标签的数量。

文本由小写英文字母,数字,符号 # 以及空格四种字符组成。我们把若干个连续的非空格字符定义成一个词,词的左右两边要么是空格要么就是文本的开头或者结尾。若一个词的长度大于 1 ,第一个字符是 # 而其它的字符都不是 #,那我们称这个词是一个标签。

现在喵喵想计算文本中出现的不同标签的数量,并将其打印出来。

输入格式:
在一行中输入一个长度不超过 10
5
的字符串 str 表示要处理的文本

输出格式:
先在一行中输出一个整数 n,代表文本中出现的不同标签的个数

接下来 n 行,每行打印一个标签和这个标签出现的次数

标签可以按任何顺序打印

输入样例:
i have brought #peace #freedom #justice and #security to my new empire
输出样例:
4
#freedom 1
#justice 1
#peace 1
#security 1
输入样例:
#to #be #or #not #to #be
输出样例:
4
#be 2
#not 1
#or 1
#to 2

做了一半 ,剩下的如何计数用什么做谁会

#include <stdlib.h>
#include<string.h> 
#include<stdio.h>
int main()
{
    char zifu[1000];
    char results[100][1000];
    gets(zifu);
    int num=0,m=0,i=0,j=0,flag=1;
    if(zifu[0]!='#'){
           flag=0;
    }
    for(i=0;i<strlen(zifu);i++){
        
        if(' '==zifu[i]){
            printf("\n"); 
            m=0;
            if(i<(strlen(zifu)-1)&&zifu[i+1]!='#'){flag=0;
                //num++;
            }else if(zifu[i+1]=='#'){
                num++;flag=1;
            }
            
            continue;    
        } else {
            if(flag==1){
                results[num][m]=zifu[i];
                m++;
            }
        }
        
        
    }
    for(j=1;j<=num;j++){//
        if(strlen(results[j])>=2&&results[j][0]=='#'){
            printf("%s\n",results[j]);
        }
    }
    return 0;
}