⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scanf_twice.txt

📁 这是最简单的DFA实现
💻 TXT
字号:
# include <stdio.h>

main()
{
  FILE *fp1,*fp2,*fp3;
  char q;
  int state=0;
  if((fp1=fopen("d://f1.txt","r"))==NULL)             //打开文件f1
  {
   printf("error!\n");
   return 0;
  }
  if((fp2=fopen("d://f2.txt","w"))==NULL)             //建立并打开文件f2
  {
   printf("error!\n");
   return 0;
  }
  q=getc(fp1);
  while(!feof(fp1))                            /*第一次消除注释*/
  {
   switch(state)
   { 
    case 0:                                    //状态零
           if(q=='/') state=1;
           else 
           {
            putc(q,fp2);
           }
           break;
    case 1:                                     //状态一
           if(q=='*') state=2;
           else if(q='/') state=4;
           else
           {
            putc('/',fp2);
            putc(q,fp2);
            state=0;
           }
           break;  
     case 2:                                    //状态二
           if(q=='*') state=3;
           break;
     case 3:                                    //状态三
           if(q=='/') state=0;
           else if(q!='*') state=2;
           break; 
     case 4:                                    //状态四
           if(q=='\n') state=0;
           break;
    }
       q=getc(fp1); 
}
   if(state!=0&&state!=1&&state!=4)
	 printf("出错!注释没有结束!\n");

   fclose(fp1);                       
   fclose(fp2);                                 /*关闭文件*/


   if((fp2=fopen("d://f2.txt","r"))==NULL)
  {
   printf("error!\n");
   return 0;
  }
  if((fp3=fopen("d://f3.txt","w"))==NULL)       //建立并打开文件f2
  {
   printf("error!\n");
   return 0;
  }
  q=getc(fp2);
  state=0;
  while(!feof(fp2))                            /*第一次消除白空格*/
  {
   switch(state)
   {
    case 0:
           if(q==' '||q=='\t'||q=='\n') state=1;
           else 
           {
            putc(q,fp3);
           }
           break;
    case 1:
           if(q!=' '&&q!='\t'&&q!='\n') 
           {
            state=0;
            putc(' ',fp3);
            putc(q,fp3);
           }
           break;
   }
    q=getc(fp2);  
  }
  fclose(fp2);
  fclose(fp3);
} 




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -