编译原理之求字符串和字符个数

来源:互联网 发布:淘宝和天猫是一家吗 编辑:程序博客网 时间:2024/05/17 23:21

 

/* 无论是汉字还是数字,全部可以被识别出,这比上次的写的更完美此程序用的C++,关键在于字符串的判断,这里用了2个标志符TAG,M,思路是有字符时字符串加1,IN.TXT在该文件夹下,否则写完整的路径*/


#include<iostream>
#include<fstream>
using  namespace  std;

void  main()
{
int  zf=0;
int zfc=0;
int  i=0;int m=0;
int tag;
char   a;
ifstream   fin;
ofstream  fout;
fin.open ("in.txt");
if(!fin){cout<<"文件打不开"<<endl;exit(0);}
if(fin.eof()){cout<<"wen  jian  jie  shu:"<<endl;}
while(!fin.eof())  
{

   a=(char)fin.get();
   cout<<"a="<<a<<endl;
  if(a==' '||a=='/t'||a=='/n')
 {   
     i=0;
  m=0;//关键,以前的就是没用它
  
   cout<<"zf= "<<zf<<"  i=  "<<i<<"  tag=  "<<tag<<"  zfc="<<zfc<<endl;  //只是用于测试时观察的
  continue;
   
 }

 else  if(fin.eof()){cout<<"wen  jian  jie  shu:"<<endl;}
  else //if((a>='A'&&a<='Z')||(a>='a'&&a<='z')||((int)a>=0&&(int)a<=9))
   
  {
   tag=1-i;
     i=tag;
 
  if(tag==1&&m==0){zfc=zfc+1;m=m+1;}
    zf=zf+1;
    cout<<"zf= "<<zf<<"  i=  "<<i<<"  tag=  "<<tag<<"  zfc="<<zfc<<endl;  //调试时用的
          continue; }
 
 
}
  fin.close ();
  fout.open ("out.txt");
  fout<<"in.text中有"<<zf<<"个字符"<<endl;
 fout<<"in.text中有"<<zfc<<"个字符串"<<endl;
fout.close();

}

原创粉丝点击