1. 程式人生 > >編寫一個刪除C語言程式中所有註釋語句的程式

編寫一個刪除C語言程式中所有註釋語句的程式

#include <stdio.h>

void rcomment (int c);
void in_comment_one (void);   //該函式用於處理/*及*/的註釋符
void in_comment_two (void);   //該函式用於處理//的單行註釋符
void echo_quote (int c);

int main(void)
{
    int c;
    while ((c = getchar()) != EOF)
        rcomment(c);

    return 0;
}

void rcomment (int c)
{
    int d;
    if
(c == '/') if ((d = getchar()) == '*') in_comment_one(); else if (d == '/') { in_comment_two(); } else { putchar(c); putchar(d); } else if (c == '\'' || c == '"') //處理''或""中包含的字元或字串 echo_quote (c); else
putchar (c); } void in_comment_one (void) { int c, d; c = getchar(); d = getchar(); while (c != '*' || d != '/') /* 一直找到註釋結尾 */ { c = d; d = getchar(); } } void in_comment_two (void) { int c; c = getchar(); while (c != '\n') /* 一直找到註釋結尾 */
{ c = getchar(); } ungetc(c, stdin); //讀到的換行符返回到緩衝區當中 } void echo_quote (int c) { int d; putchar (c); while ((d = getchar()) != c) { putchar (d); if (d == '\\') //避免把跟在反斜槓後面的引號看做是結束引號,直接將其輸出 putchar (getchar()); } putchar (d); }