首页 / C++ / 消去C、C++程序中的注释
消去C、C++程序中的注释
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了消去C、C++程序中的注释,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3038字,纯文字阅读大概需要5分钟。
内容图文
一、实验目的及要求
(1)掌握C语言文件的基本操作,消除源C语言程序中的注释,为以后的编译提供方便。
二、实验设备(环境)及要求
PC机及vc6.0软件及环境
三、实验内容与步骤
(1)先输入输出文件名和输入文件名,对输入文件和输出文件分别判断其的可读性和可写性,如果输入文件不可读或输出文件不可写,则报错;如果输入输出正常,则从程序中开始读取字符进行相应的操作。
(2)首先第一个判断是判断读取的字符是否为”,如果是,再判断是否历经在‘’里面了(c是否等于0),如果不在那里面,则做标记,让在””里面的字符都正常写入输出文件。
(3)接着第一个判断是判断读取的字符是否为‘,如果是,再判断是否历经在““里面了(p是否等于0),如果不在那里面,则做标记,让在’‘里面的字符都正常写入输出文件。
(4)判断是否出现单独的*/,如果出现,则输出error:*/error character,
判断方法:当不在““或‘’里面(即count=0)并且不再注释里面(即temp=0)时,判断当前字符是否为‘*’,如果是,则判断下一个是否为‘/‘,如果是则输出error:*/error character,如果不是,则做一个标记(t=1),让本次循环输出当前字符和前一个字符。
(5)然后进行注释的消除:当当前字符为‘/’并且不在““或‘’中时,判断下一个字符是否为‘/’或‘*’,如果是‘/’,则做一个标记(flag=1),让注释不写入输出文件中,直到字符为‘\n’时才恢复输入(flag=0),如果是‘*’,则做标记(temp=1和flag=1),让注释不写入输出文件,直到字符为‘*/’时才恢复输入(flag=0 和 temp=0);
(6)每循环一次,往后读一个字符,知道字符读完;
(7)循环结束后判断,是否还在/*的注释中(temp是否为1),如果temp=1,则说明/*的注释没有结尾的*/。输出错误,打印出“error:/*error “;
(8)最后,关闭输入和输出文件。
四、实验结果与数据处理
所有功能一次性测试。
输入文件:input.cpp
控制台错误提醒:。
输出文件:
五、代码清单
#include"stdio.h"
#include"stdlib.h"
main()
{
FILE *fp1,*fp2;
char ch1,ch3,ifile[100],ofile[100];
int t,temp,count,flag,c,p;
printf("请输入输入文件名:");
scanf("%s",ifile);
printf("请输入输出文件名:");
scanf("%s",ofile);
if((fp1=fopen(ifile,"r"))==NULL) // input.cpp为任意带注释的C程序
{
printf("file cannot be opened\n");
exit(1);
}
if((fp2=fopen(ofile,"w"))==NULL) // ouput.cpp为去掉注释后的程序
{
printf("file cannot be writed\n");
exit(1);
}
ch1=fgetc(fp1);
flag = 0;
count = 0;
temp = 0;
c=0;
p=0;
while(!feof(fp1))
{
t=0;
ch3 = ch1;
if(ch3 == '"' && c == 0) //判断是否在""中,如果在,不需要去除
{
count ++;
p = 1;
if(count == 2)
{
p =0;
count = 0;
}
}
if(ch3 == '\'' && p == 0)
{
count ++;
c = 1;
if(count == 2)
{
c =0;
count = 0;
}
}
if(count == 0 && temp == 0 && ch3 == '*') //判断是否出现单独*/错误
{
ch1 = fgetc(fp1);
if(ch1 == '/')
{
printf("error:*/error character\n");
}
else
{
t=1;
}
}
if(ch3 == '/' && count ==0) //消除注释
{
ch1 = fgetc(fp1);
if(ch1 == '/')
{
flag=1;
}
else if(ch1='*')
{
temp = 1;
flag = 1;
}
}
if(ch1 == '\n' && temp != 1)
{
flag=0;
}
if(flag == 0)
{
fputc(ch1,fp2);
}
if(t == 1)
{
fputc(ch3,fp2);
fputc(ch1,fp2);
}
if(temp == 1)
{
ch3 = ch1;
if(ch3 == '*')
{
ch1 = fgetc(fp1);
if(ch1 == '/')
{
temp = 0;
flag = 0;
}
}
}
ch1 = fgetc(fp1);
}
if(temp == 1 ) //判断是否有出现/*,而没有*/来结束的错误
{
printf("error:/*error\n");
}
fclose(fp1);
fclose(fp2);
return 0;
}
Riker-k 发布了32 篇原创文章 · 获赞 8 · 访问量 1万+ 私信 关注
内容总结
以上是互联网集市为您收集整理的消去C、C++程序中的注释全部内容,希望文章能够帮你解决消去C、C++程序中的注释所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。