此程序可以实现在一个字符串中汉字出现的频数计算,目前想要输入一个字符串后判断其中各个汉字出现的频数之后,再循环输入另一个字符串判断各个汉字出现的频数,如何实现这种循环操作?

此程序可以实现在一个字符串中汉字出现的频数计算,目前想要输入一个字符串后判断其中各个汉字出现的频数之后,再循环输入另一个字符串判断各个汉字出现的频数,如何实现这种循环操作?

此程序不仅适用于中文字、句检索计数,同样适用于其他字符。
#include
#include
#include
int Chinesestrfind(char *A,char*B)//在B中检索A的出现次数// 
{
    int lA=strlen(A),lB=strlen(B),count=0,i,j,c;
    char temp[lA+1];
    for(i=0;i+lAfor(j=0;jif(strcmp(A,temp)==0)
        {
            count++;
        }
    }
    return count;
} 

int main ()
{
    char A[]="点击",B[]="点击获得更多信息购买最新产品获得优惠优惠信息点击链接";//在B中检索A的出现次数// 
    int count=Chinesestrfind(A,B);
    printf("\"%s\"在字符串中出现%d次。\n",A,count);
    return 0;
}

这也不是检索汉字啊,这是检索一串汉字

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Chinesestrfind(char *A,char*B)//在B中检索A的出现次数// 
{
    int lA=strlen(A),lB=strlen(B),count=0,i,j;
    char *temp = (char*)malloc(lA+1);
    temp[lA] = 0;
    for(i=0;i+lA<lB;i+=lA)
    {
        for(j=0;j<lA;j++)
        {
            temp[j]=B[i+j];
        }
        if(strcmp(A,temp)==0)
        {
            count++;
        }
    }

    free(temp);
    return count;
} 
 
int main ()
{
    char a[] = "中";
    int hs = strlen(a);
    char s[1000];
    char f[1000];
    printf("输入主串:");
    gets(f);
    while(1)
    {
        printf("输入搜索串:");
        gets(s);
        int len = strlen(s);
        if(len == 0)
            break;
        for(int i=0;i<len;i+=hs)
        {
            char *p = (char*)malloc(hs+1);
            memcpy(p,s+i,hs);
            p[hs] = 0;
            int count=Chinesestrfind(p,f);
            printf("\"%s\"在字符串中出现%d次。\n",p,count);
            free(p);
        }
    }
   
    system("pause");
    return 0;
}
 

#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include <locale.h>
int find_char_count(wchar_t *str, wchar_t *substr)
{
    int count = 0;
    int len = wcslen(substr);
    wchar_t *p = str;
    while (*p != L'\0')
    {
        if (memcmp(p, substr, len) == 0)
        {
            count++;
        }
        p++;
    }
    return count;
}

int main()
{
    // 将编码设置为系统默认的宽字符编码
    setlocale(LC_ALL, ""); 
    wchar_t str[1000], substr[100],temp[1];
    printf("请输入一串中文字符串:\n");
    fgetws(str, sizeof(str)/sizeof(wchar_t), stdin);
    while(1){
        printf("请输入中文字符子串:\n");
        fgetws(substr, sizeof(substr)/sizeof(wchar_t), stdin);
        int len = wcslen(substr);
        for(int i=0;i<len-1;i++){
            temp[0] = substr[i];
            int count = find_char_count(str,temp);
            printf("子串中 %lc 中文字符在主串中出现的次数为:%d\n",substr[i], count);
        }
    } 
    return 0;
}

你的程序是找字符串子串。
你要的功能应该类似统计26个字母出现的频率

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632