zoukankan      html  css  js  c++  java
  • C到CPP的注释转换

    connver_comment.h
    #ifndef _CONNVER_COMMENT_H_
    #define _CONNVER_COMMENT_H_
    
    #define INPUTFILE "input.txt"
    #define OUTPUTFILE "output.txt"
    
    enum{
    	CSTATUS,CPPSTATUS,NULLSTATUS,EOFSTATUS
    };
    void connver_main();
    void do_null_status();
    void do_c_status();
    void do_cpp_status();
    static void conver_work();
    
    #endif

    connver_comment.c

    #include<stdio.h>
    #include<stdlib.h>
    #include"connver_comment.h"
    int status=NULLSTATUS;
    
    void do_null_status(FILE *ifp,FILE *ofp){
    	int c = fgetc(ifp);
    	if(c==EOF){
    		status=EOFSTATUS;
    		return;
    	}
    	else if(c=='/'){
    			c = fgetc(ifp);
    			if(c==EOF){
    				fputc('/',ofp);
    				status=EOFSTATUS;
    				return;
    			}
    			else if(c=='*'){
    				status=CSTATUS;
    				fputc('/',ofp);
    				fputc('/',ofp);
    				return;
    			}
    			else if(c=='/'){
    				status=CPPSTATUS;
    				fputc('/',ofp);
    				fputc('/',ofp);
    				return;
    			}
    			else{
    				fputc('/',ofp);
    				fputc(c,ofp);
    				return;
    			}
    		}
    	fputc(c,ofp);
    };
    
    void do_c_status(FILE *ifp,FILE *ofp){
    	int c = fgetc(ifp);
    	if(c==EOF){
    		status=EOFSTATUS;
    		return;
    	}
    	else if(c=='*'){
    		c = fgetc(ifp);
    		if(c==EOF){
    			status=EOFSTATUS;
    			fputc('*',ofp);
    			return;
    		}
    		else if(c=='/'){
    			status=NULLSTATUS;
    			fputc('
    ',ofp);
    			return;
    		}
    		else{
    		fputc('*',ofp);		
    		ungetc(c,ifp); 
    		}
    	
    		return;
    	}
    	else if(c=='
    '){
    		fputc('
    ',ofp);
    		fputc('/',ofp);
    		fputc('/',ofp);
    		return;
    	}
    	else{
    		fputc(c,ofp);		
    	}
    };
    void do_cpp_status(FILE *ifp,FILE *ofp){
    	
    	int c=fgetc(ifp);
    	if(c==EOF){
    		status=EOFSTATUS;
    		return;
    	}
    	else if(c=='
    '){
    		fputc('
    ',ofp);
    		status=NULLSTATUS;
    		return;
    	}
    	else{
    		fputc(c,ofp);
    	}
    };
    
    static void conver_work(FILE *ifp,FILE *ofp){
    
    	while(status!=EOFSTATUS){
    		
    		switch(status){
    		case NULLSTATUS:
    			do_null_status(ifp,ofp);
    			break;
    		case CSTATUS:
    			do_c_status(ifp,ofp);
    			break;
    		case CPPSTATUS:
    			do_cpp_status(ifp,ofp);
    			break;
    		default:
    			break;
    		}
    	}
    }
    
    void connver_main(){
    	FILE *ifp = fopen(INPUTFILE,"r");
    	FILE *ofp = fopen(OUTPUTFILE,"w");
    	if(NULL==ifp||NULL==ofp){
    		perror("open:");
    	}
    	conver_work(ifp,ofp);
    
    	fclose(ifp);
    	fclose(ofp);
    }
    test.c

    #include"connver_comment.h"
    
    int main(){
    	connver_main();
    	return 0;
    }



  • 相关阅读:
    iOS开发UI篇—字典转模型
    iOS开发UI篇—懒加载
    iOS开发UI篇—九宫格坐标计算
    iOS开发UI篇—简单的浏览器查看程序
    iOS开发UI篇—transframe属性(形变)
    iOS开发UI篇—Button基础
    OS开发UI基础—手写控件,frame,center和bounds属性
    Foundation框架—集合
    Foundation框架—字符串
    uvalive 4255 Guess(拓扑排序)
  • 原文地址:https://www.cnblogs.com/yongtaochang/p/13615383.html
Copyright © 2011-2022 走看看