3,881
社区成员
发帖
与我相关
我的任务
分享
Begin /* s = 2 * 3.14 * r * r + 2 * 3.14 * r * h */ //这里少了一个"*"号
real r, h, s ;
s = 2 * 3\ //续航符写错了
.14 * r * (r + h)//因为.14前有两个空格,所以结果也会有,处理以下
End
void pro_process (char *buf) //预处理程序
{
ifstream cinf ("F:\\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 ;//把++i改为i++
}
}
break ;
case true :
if (old_c =='*' && cur_c =='/') //离开注释
in_comment =false ;
}
old_c =cur_c ; //保留前一个字符
}
buf[i++] ='#' ;//把++i改为i++
}