ファイルの文字データの統計


1つのファイル内の単語の個数、行数、および文字の個数、スペースの数を統計します.
改行を無視し、ファイルには英字とスペースと句読点しかありません.
1つの単語が2行にある場合を考慮しない.
例:ファイル名:filename.txt
hello world,i love you!
          byby!
出力:
1---5---23---4
2---1---15---10
行:2---単語:6---文字:38---スペース:14
コードは次のとおりです.
#include <stdio.h>
#include <string.h>
int *GetNum(int *filename,int *TotalNum);
int main()
{
	int ToaNum[4]={0};
	char filename[30];
	int *num=NULL;
	printf("please input the filename:
"); scanf("%s",filename); num=GetNum(filename,ToaNum); printf(" :%d--- :%d--- :%d--- :%d
",num[0],num[1],num[2],num[3]); return 0; } int *GetNum(int *filename,int *TotalNum) { FILE *fp; // ; char buffer[1002];// ; int LEN; // ; int i ; int islastblank=0;// ; int WordNum=0; int CharNum=0; int blank=0; //1. ; if((fp=fopen(filename,"rb"))==NULL) { printf("fopen error!"); return NULL; } //2. ; while(fgets(buffer,1002,fp)!=NULL) { LEN=strlen(buffer); for(i=0;i<LEN;i++) { char c=buffer[i]; //3. Tab ; if(c == '\t' || c==' ') {// ,WordNum++; blank++; if(i==0) {// , ; islastblank=1; } else { !islastblank && WordNum++; islastblank=1; } } if(c!='\r' && c!='
')//4. ; {// ,CharNum++; CharNum++; if(c == '\t' || c==' ') islastblank=1; else islastblank=0; } } !islastblank && WordNum++; islastblank=0; TotalNum[0]++; TotalNum[1]+=WordNum; TotalNum[2]+=CharNum; TotalNum[3]+=blank; printf("%d---%d---%d---%d
",TotalNum[0],WordNum,CharNum,blank); WordNum=0; CharNum=0; blank=0; } return TotalNum; }

1つのファイルがすべて標準的な英語で、真ん中にスペースが1つしかない場合、英語の単語の個数を簡単に統計するコードは以下の通りです.
#include <stdio.h>
#include <string.h>
int main()
{
	char str[50];
	int LEN,i;
	int count=0;
	gets(str);
	puts(str);
	LEN=strlen(str);
	for(i=0;i<LEN;i++)
	{
		
		while(str[i]!=' ' && str[i]!= '\0')
			i++;
		if(str[i]==' ')
			count++;
	}
	count++;
	printf("%d
",count); return 0; }

私は愚かで、ここまで悟って、とても感慨深くて、自分と共に努力して、陋文は浅くて、見る者は大目に見ます!