C++第16周项目4 -处理C++源代码 - (2)花括号单独占一行-阿里云开发者社区

开发者社区> 贺利坚> 正文

C++第16周项目4 -处理C++源代码 - (2)花括号单独占一行

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/9078413 【项目4】写处理C++源代码的程序    (2)读入一个C++程序,使程序中的所有左花括号“{”和右花括号“}”都单独占一行,新程序保存到另
+关注继续查看

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/9078413


【项目4】写处理C++源代码的程序

   (2)读入一个C++程序,使程序中的所有左花括号“{”和右花括号“}”都单独占一行,新程序保存到另一个.cpp文件中,并在屏幕上显示处理过的程序,显示时加上行号。

参考解答:

#include <fstream>
#include<iostream>
//#include<string>
#include<cstdlib>
using namespace std;
void outprogram(char *filename);
int main( )
{
    char ch1,ch2;
    //将文件中的数据读入到字符数组中
    ifstream sourceFile("source.cpp",ios::in);  //以输入的方式打开文件
    if(!sourceFile)       //测试是否成功打开
    {
        cerr<<"source code read error!"<<endl;
        exit(1);
    }
    ofstream outFile("newsource.cpp",ios::out);  //以输出的方式打开文件
    if(!outFile)       //测试是否成功打开
    {
        cerr<<"new source code write error!"<<endl;
        exit(1);
    }

    ch1='\0';
    while(!sourceFile.eof())
    {
        sourceFile.get(ch2);
        //读到了花括号,且前一个符号不是换行,应该加入一个换行
        if((ch2=='{'||ch2=='}')&&(ch1!='\n'))
            outFile.put('\n');
        else
            //当前读到的不是换行,但前一个是花括号,此时也该加
            if((ch1=='{'||ch1=='}')&&(ch2!='\n'))
                outFile.put('\n');
        outFile.put(ch2); //输出当前读入的符号
        ch1=ch2;
    }
    outFile.close();
    sourceFile.close();
    cout<<"经过处理后的源程序是:"<<endl;
    outprogram("newsource.cpp");
    return 0;
}

void outprogram(char *filename)
{
    char line[256];
    int n = 1;
    ifstream inFile(filename, ios::in);  //以输入的方式打开文件
    if(!inFile)       //测试是否成功打开
    {
        cerr<<"file open error!"<<endl;
        exit(1);
    }
    while (!inFile.eof())
    {
        inFile.getline(line,255,'\n');
        cout<<n<<'\t'<<line<<endl;
        n++;
    }
    inFile.close();
    return;
}



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《React Native移动开发实战》一一1.5 小试牛刀——更改React Native项目源码
本节书摘来自华章出版社《React Native移动开发实战》一 书中的第1章,第1.2节,作者:袁林 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1091 0
C++项目参考-用递归方法求解
【项目-用递归方法求解】(1)编写递归函数求出n的阶乘(自定义main函数,调用定义的递归函数) 参考解答: #include &lt;iostream&gt; using namespace std; long fact(int); //函数声明 int main( ) { int n;
925 0
生成对抗网络入门指南(内含资源和代码)
生成对抗网络是由两个相互竞争的网络组成的深度神经网络架构。本文对其进行详细讲解,并附上大量相关英文文章链接供参考。
7512 0
2014秋C++第12周项目2参考-OJ平台题目中多种输入形式的处理
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目2-OJ平台题目中多种输入形式的处理】看教学视频或“OJ平台题目中不同形式输入的处理”,完成平台中的一组题目,分别对应不同输入的形式的问题。 A: 求N组数的最大公约数 Descriptio
1174 0
Microsoft Visual Studio与Firefly 一直提示加载项目,更新源码状态问题
        笔记本一开始安装的是vs2010,由于近期开发要用vs2008与vs2005于是今天又把2008、2005安装上了,但在打开项目的时候,先是提示加载项目文件,然后一直提示更新源码状态,很慢很慢的,之前只有vs2010的时候,打开是很快的,现在不管是用2008、2005、2010就没有一个快的,源码管理用的是firefly,有人知道为什么会出现这种情况吗?        
1003 0
+关注
贺利坚
烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
1965
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载