实验题目: 将C++源程序的注释删除并保存到另一个文件中,使用循环读写单个字符的方式完成。
时间: 2023-12-14 18:40:07 浏览: 85
好的,我可以给你一个实现的思路,你可以参考一下:
1. 打开源程序文件和目标文件,分别为输入流和输出流。
2. 从输入流中读取每一个字符,判断是否是注释符号(//或/*),如果是,则忽略该行或直到遇到*/结束。如果不是注释,则将该字符写入输出流中。
3. 循环读取字符并写入输出流中,直到源程序文件的结尾。
4. 关闭输入流和输出流。
下面是一段示例代码:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream input("source.cpp"); // 打开源程序文件
ofstream output("output.cpp"); // 创建目标文件
char c, next_c;
bool is_comment = false; // 是否处于注释中的标志
while (input.get(c)) { // 从输入流中读取每一个字符
if (!is_comment) { // 如果不处于注释中
if (c == '/') { // 判断是否为注释符号
input.get(next_c);
if (next_c == '/') {
is_comment = true; // //'/'为行注释符号,进入行注释模式
} else if (next_c == '*') {
is_comment = true; // // '/*'为段注释符号,进入段注释模式
} else {
output << c << next_c; // 不是注释符号,写入输出流中
}
} else {
output << c; // 不是注释符号,写入输出流中
}
} else { // 如果处于注释中
if (c == '*' && input.peek() == '/') { // 判断是否为段注释结束符号
input.get(next_c);
is_comment = false; // 退出段注释模式
}
}
}
input.close(); // 关闭输入流
output.close(); // 关闭输出流
return 0;
}
```
以上代码仅供参考,实际情况还需要根据具体需求进行一些修改和完善。
阅读全文