文件操作


将第一题的源代码保存为abc.c文件,并且要求abc.c文件中有相当数量的注释,包括//和/*……*/两种形式的注释

(1)读取abc文件的内容,将其显示在控制台上,并为每行代码增加一个符号。(10)
(2)使源代码中的//类型的注释内容不显示在控制台中。(10)
(3)使源代码中的/*……*/类型的注释内容不显示在控制台中。(10)

#include 
using namespace std;

int main(){
    FILE* fp=NULL;
    fp=fopen("E:\\abc.cpp","r");
    if(fp==NULL){
        cout<<"打开文件失败"<<endl;
        return 0;
    }
    char buf[255];
    int line=1;
    fgets(buf,255,fp);//这个地方不写一个就会把最后一行读两遍
    while(!feof(fp)){
        cout<<"line"<":";
        bool flag1=false,flag2=false,flag3=false,flag4=false;
        int j=0;
        while(j<strlen(buf)){
            if(buf[j]=='*'){
                if(flag1&&buf[j+1]=='/'){
                    flag1=false;
                    j++;
                }
            }
            else if(flag1){
                //处理/* */中的内容 什么也不做
            }
            else if(buf[j]=='/'){
                if(buf[j+1]=='/'){
                    //flag1=true;
                    break;
                }
                if(buf[j+1]=='*'){
                    flag1=true;
                    j++;
                }
                else{
                    cout<<buf[j];
                }
            }
            else
                cout<<buf[j];
            j++;
        }
        cout<<endl;
        fgets(buf,255,fp);
//        if(feof(fp))
//            break;
    }
    fclose(fp);
    return 0;
}