源程序的输入及预处理

//源程序的输入及预处理
#include <fstream.h>
#include <iostream.h>
void pro_process(char *);
void main( )          //测试驱动程序
{
//定义扫描缓冲区
char buf[4048]={'/0'};        //缓冲区清0
//调用预处理程序
pro_process(buf);
//在屏幕上显示扫描缓冲区的内容
cout<<buf<<endl;
}
void pro_process(char *buf)       //预处理程序
{
ifstream cinf("source.txt",ios::in);
int i=0;           //计数器
char old_c='/0',cur_c;       //前一个字符,当前字符。
bool in_comment=false;       //false表示当前字符未处于注释中。
while(cinf.read(&cur_c,sizeof(char))){   //从文件读一个字符
   switch(in_comment){
   case false:
    if(old_c=='/' && cur_c=='*'){   //进入注释
     i--;        //去除已存入扫描缓冲区的字符'/'
     in_comment=true;
    }
    else {
     if(old_c=='//' && cur_c=='/n') //发现续行
      i--;       //去除已存入扫描缓冲区的字符'/'
     else {
      if(cur_c>='A' && cur_c<='Z')//大写变小写
       cur_c+=32;
      if(cur_c =='/t' || cur_c =='/n') //空格取代TAB换行
       cur_c=' ';
      buf[i++]=cur_c ;
     }
    }
    break;
   case true:
    if(old_c=='*' && cur_c=='/')   //离开注释
     in_comment=false;
   }//end of switch
   old_c= cur_c;        //保留前一个字符
}//end of while
buf[i++]='#';         //在源程序尾部添加字符'#'
}

//source.txt

Begin/*S=2*3.14*R*R+2*3.14*R*H*/
Real r,h,s;
s=2*3./
14*r*(r+h)
End

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip实验一 源程序预处理及词法分析程序设计等.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值