1. 程式人生 > >編寫程式將C / C++程式碼中的註釋去掉

編寫程式將C / C++程式碼中的註釋去掉

今天看到一道題,覺得可以拿來鍛鍊一下。就自己做了一遍。

/************************
*功能:輸入合法的C、C++程式,將註釋去掉後輸出
*注意:“//”“/*”等等雙引號之間的字元不予處理,但是/*...*/之間的雙引號也不起作用,即當處於兩個雙引號之間時,/*不起作用,但是如果先有了/*然後出現的雙引號則雙引號不起作用。
*
**************************/
#include<stdio.h>
#include<string.h>
int main() {
    char c[1024];
    int FLAG=0;//指示是否遇到/*
int quote=-1;//指示是否在引號之中,1在,-1不在 int HasPrint=0;//指示當前行是否有輸出。 while(gets(c)) { HasPrint=0; for(int i=0; i<strlen(c); i++) { if(FLAG) { if(c[i]=='*'&&c[i+1]=='/') { FLAG=0; i++;//跳過 /* 兩個字元的輸出 continue
; } } else { if(c[i]=='"')quote*=-1; if(quote==-1) { // 如果不在引號之中 if(c[i]=='/'&&c[i+1]=='/') { // 遇到//直接跳過本行 c[i+1]不會越界,最多訪問到'\0' break; } if(c[i]=='/'&&c[i+1
]=='*') { FLAG=1; } } if(!FLAG) { putchar(c[i]); HasPrint=1; } } } if(HasPrint)printf("\n"); } printf("END!"); return 0; }