文本统计器

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <string.h>
using namespace std;
FILE *fp=fopen("数据文件.txt","r");
#define MAX 1024    // Windows下txt文件一行最多1024字符
char line[MAX];
int main()
{   
    HWND TheWindow;
    SetConsoleTitle("文本统计器");
    system("color f0"); 
    char stop[3]="。";
    int data = 0,chinese = 0, sentence = 0,blank = 0;
    int english_ch = 0,passages = 0,rows = 0; 
    unsigned char temp[2];
    while(fgets( line , MAX , fp) != NULL)
    {   
        rows++;
        if(line[0] == '\n')     continue;
        for(int i = 0; i < 100;i++)
        {   
            if(line[i] == '\n')
            {
                passages++; //段落
                continue;
            }
            temp[0] = line[i];
            if (temp[0] >= 0XB0 )//GB2312下的汉字,最小是0XB0  
            {   
                i++;
                chinese++;
                continue;
            }  
            if(line[i] >= 'a'&&line[i] <= 'z'||line[i] >= 'A'&&line[i] <= 'Z')
            {
                english_ch++;
                continue;
            }
            if(line[i] >= '0' && line[i] <= '9')
            {
                data++;
                continue;
            }
            if(line[i] == ' ')
            {
                blank++;
                continue;
            }
            if(line[i] == stop[0] && line[i+1] == stop[1]||line[i] == '.')
            {
                sentence++;
                continue;
            }
        }
    }
    fp=fopen("文本统计结果文件.txt","w");
    fprintf(fp,"中文个数为:%2d\n",chinese);
    fprintf(fp,"英文个数为:%2d\n",english_ch);
    fprintf(fp,"数字个数为:%2d\n",data);
    fprintf(fp,"空格个数为:%2d\n",blank);
    fprintf(fp,"句子数为:%2d\n",sentence);
    fprintf(fp,"行数为:%2d\n",rows);
    fprintf(fp,"段落数为:%2d\n",passages);
    fclose(fp);
    ShellExecute(NULL,"open","文本统计结果文件.txt",NULL,NULL,SW_SHOWNORMAL);
    TheWindow = ::FindWindow( NULL, "文本统计器" );
    SendMessage(TheWindow,WM_SYSCOMMAND,SC_CLOSE,NULL);
    return 0;
} 











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值