| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6667 人关注过本帖
标题:请问怎么在txt中统计某一字符串出现的次数并输出呢?
取消只看楼主 加入收藏
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
收藏
 问题点数:0 回复次数:2 
请问怎么在txt中统计某一字符串出现的次数并输出呢?
我可以打开或创建一个txt文件并在其中添加新的文本,能显示文本的内容,请问怎么在txt中统计某一字符串出现的次数并输出呢?


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>


void menu();
void wenben();


main()
{  

    menu();

}


void menu()
{
    FILE *aa, *ab;
    char filename[30];
    char a[2]; //输入字符选项需要多一个字符位吸收输入的回车键
    for(;;)
    {
        printf("输入1开始文本编辑\n输入2或者右上角点X关闭\n");
        gets(a);
        if(a[0]=='1'){system("cls"); wenben();    }
        if(a[0]=='2') return 0;
        else system("cls");
        
    }

}

    void wenben()
{    char e;
    int f=0,g=0,h=0,k=0,i=0,n=1,o=0,p=0;//f计数空格,g计数英文,h计数数字,k计数全部字符数量,i计算特定字符串长度,n对比字符内容
    char b[2],c[80],l[80],m[80];//b为文本编辑的选项,c是每行输入的字符串,l是用来查找特定字符串数量的字符串,m是对比的
    char d[]="^^";
    FILE *aa, *ab;
    char filename[30];
    printf("输入需要编辑的文本名,将以可读写的方式打开或者创建\n");
    gets(filename);
    strcat(filename,".txt");
    aa=fopen(filename,"a+");//到这里打开或者创建文本


    if(!aa)
    {   
        system("cls");
        printf("打开或创建失败\n");
        wenben();//重新打开或创建,起个别的名字
    }
    if(aa)
    {
        system("cls");
        printf("打开或创建成功\n");
    }


    for(;;)
    {
        printf("输入1在文本添加字符\n输入2退出\n输入3显示文本内全部字符\n输入4统计字符串在文章中出现的次数\n");//文本编辑的功能
        gets(b);
        if(b[0]=='1')//从文本的末尾添加字符
    {
    printf("每次最多输入80个字符,输入^^停止输入\n");
    for(;;)
    {
    gets(c);
   
    if (strcmp(c,d)==0)
    {    fclose(aa);//操作以后关闭文件,避免丢失数据
        break;
    }//输入的字符串为^^,与函数内保存的一样,停止输入
    aa=fopen(filename,"a+");
    fputs(c,aa);
    fprintf(aa,"\n");
    fclose(aa);
    }
    }
    if (b[0]=='2') break;//退出文本编辑,可以打开或创建其它文本继续文本编辑,也可以关闭程序
    else system("cls");
    if (b[0]=='3') //读取显示全部文本..
    {
        system("cls");
        fclose(aa);
        aa=fopen(filename,"r");//打开文件以后从文本的第一个字符开始读取字符
        e=fgetc(aa);
        while (e!=EOF)
        {   
            if (e!='\n') k++;//去掉每次输入之后的输入到文本里的换行符
            if (e==32) f++;
            if (65<=e&&e<=90||97<=e&&e<=122) g++;
            if (48<=e&&e<=57) h++;
            putchar(e);
            e=fgetc(aa);
        }
        fclose(aa);
    printf("\n空格数%d\n",f);f=0;
    printf("字母数%d\n",g); g=0;
    printf("数字数%d\n",h);h=0;
    printf("总字数%d\n\n",k);k=0;

    }
    if (b[0]=='4') //这个想不出来,我只会一个一个显示txt内的字符
    {
        printf("输入需要统计的字符串,因为分行输入,所以需要统计的字符串最多长80个字符\n");//文本内的字符串统计
        gets(l);
        i=strlen(l);
        printf("%d\n",i);
        aa=fopen(filename,"r");
        e=fgetc(aa);
        while (e!=EOF)
        {   
            
            putchar(e);
            e=fgetc(aa);
        }

fclose(aa);


     

        printf("%d\n",o);

   
    }

    }   
}


我想的是验证当前字符与输入的特定字符串的第一个字符是否相同,如果相同就将这个字符与文本的后i-1个字符放到一个长80位的字符串里然后与特定字符串进行对比前i位的字符,如果相同就计数加1,然后从当前字符的下一位或者下i-1位继续对比都行..可是我不会做,凄凉,能不能教我怎么写这个代码啊,蟹蟹!我太菜了(╥╯^╰╥)
搜索更多相关主题的帖子: 字符串 文本 字符 输入 printf 
2018-06-14 12:29
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
收藏
得分:0 
回复 2楼 吹水佬
蟹蟹!但是不知道应该怎么做,想不到思路,额,我只有一个字符串..需要对比的在txt里-_-||

[此贴子已经被作者于2018-6-14 15:27编辑过]


碧蓝航线真好玩
2018-06-14 15:21
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
收藏
得分:0 
回复 4楼 九转星河
我就是,不会写...,我既不会把txt里的东西从第一个字符开始读入字符串,到\n清空字符串继续读,也不会strstr()那个计数..惨烈

[此贴子已经被作者于2018-6-14 18:27编辑过]


碧蓝航线真好玩
2018-06-14 18:26
快速回复:请问怎么在txt中统计某一字符串出现的次数并输出呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015637 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved