1. 程式人生 > >快速刪除c/c++語言中的註釋

快速刪除c/c++語言中的註釋

前言

在日常工作中,我們會給c/c++程式碼寫上一些註釋,但是往往為了保持最終的程式碼儘可能小,我們需要刪除註釋,手動刪除太緩慢了,所以我們考慮一下自動刪除註釋功能

程式碼

//
// Created by sutaoyu on 2018/10/2.
//
#include<stdio.h>

void recomment(int c);
void in_comment(void);
void echo_quote(int c);
void start_comment();


int main()
{
    int c, d;
    while ((c = getchar()) != EOF)
    {
        recomment(c);
    }
    return 0;
}

//搜尋註釋的開始位置
void recomment(int c)
{
    int d;
    if (c == '/')
    {
        if ((d = getchar()) == '*')
        {
            in_comment();
        }
        else if (d == '/')
        {
            start_comment();
        }
        else
        {
            putchar(c);
            putchar(d);
        }
    }
    else if (c == '\'' || c == '"')
    {
        echo_quote(c);
    }
    else
    {
        putchar(c);
    }
}


//刪除以"//"開始的註釋
void start_comment()
{
    int c, d;
    while ((c = getchar()) != '\n')
        ;
}

//刪除"/*    */"註釋 
void in_comment()
{
    int c, d;
    c = getchar();
    d = getchar();
    while (c != '*' || d != '/')
    {
        c = d;
        d = getchar();
    }
}

//保證引號裡面的內容可以完整輸出
void echo_quote(int c)
{
    int d;
    putchar(c);
    while ((d = getchar()) != c)
    {
        putchar(d);
        if (d == '\\')
        {
            putchar(getchar());
        }
    }
    putchar(d);
}