欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實現(xiàn)去除c語言注釋的小工具

 更新時間:2014年02月28日 11:49:47   作者:  
這篇文章主要介紹了實現(xiàn)去除c語言注釋的小工具,說是C語言,但其實所有C語系的都可以,比如Java,需要的朋友可以參考下

去除C代碼中的注釋,
1. 單行注釋//;
2. 多行注釋/**/;
3. 單行注釋以“\”結尾則下一行也為注釋;
4. 字符串中的注釋不處理。
說是C語言,但其實所有C語系的都可以,比如Java。


小工具:去除C語言注釋 

復制代碼 代碼如下:

#include <stdio.h>

int main(int argc, char* argv[]) {
  enum {
    literal,
    single,
    multiple,
    string
  } mode = literal;
  char last = 0, current;

  while ((current = getchar()) != EOF) {
    switch (mode) {
    case single: {
      if (last != '\\' && (current == '\n' || current == '\r')) {
        putchar(current);
        current = 0;
        mode = literal;
      }
    } break;
    case multiple: {
      if (last == '*' && current == '/') {
        current = 0;
        mode = literal;
      }
    } break;
    case string: {
      if (last == '\\') {
        putchar(last);
        putchar(current);
      } else if (current != '\\') {
        putchar(current);
        if (current == '"') {
          mode = literal;
        }
      }
    } break;
    default: {
      if (last == '/') {
        if (current == '/') {
          mode = single;
        } else if (current == '*') {
          mode = multiple;
        } else {
          putchar(last);
          putchar(current);
        }
      } else if (current != '/') {
        putchar(current);
        if (current == '"') {
          mode = string;
        }
      }
    } break;
    }
    last = current;
  }

  return 0;
}

測試代碼

復制代碼 代碼如下:

#include <stdlib.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
// not show\
not show\
not show
// not show
/* not show */
    int is; // not show
    int/* not show */ ms; /* not show */
    double ds; // not show\
    not show\
    not show
    double dm; /* ...
    not show
    not show */ float fs; /**
                           * now show
                           */
    float/**/ fm;
    char cs[] = "aaa // /***/";
    char cm1[] = /* not show */"hello*/";
    char cm2[] = "/*redraiment"/* not show */;
    /* printf("http://///"); */
    return EXIT_SUCCESS;
}

處理后的代碼

復制代碼 代碼如下:

#include <stdlib.h>
#include <stdio.h>

int main (int argc, char *argv[])
{

 

    int is;
    int ms;
    double ds;
    double dm;  float fs;
    float fm;
    char cs[] = "aaa // /***/";
    char cm1[] = "hello*/";
    char cm2[] = "/*redraiment";

    return EXIT_SUCCESS;
}

相關文章

  • C++如何調用opencv完成運動目標捕捉詳解

    C++如何調用opencv完成運動目標捕捉詳解

    OpenCV作為機器視覺開源庫,使用起來非常不錯,這篇文章主要給大家介紹了關于C++如何調用opencv完成運動目標捕捉的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • C語言用遞歸函數(shù)對素數(shù)進行判斷流程

    C語言用遞歸函數(shù)對素數(shù)進行判斷流程

    素數(shù)判斷是編程語言學習過程中一個老生常談的話題,而它的實現(xiàn)也有多種算法,包括經典的試除法(以及試除法的幾種優(yōu)化),進階的素數(shù)表篩選法,埃拉托斯特尼篩法和歐拉篩法(以及它們的優(yōu)化)等。對以上算法感興趣的朋友們,不妨搜索“素數(shù)判斷的N種境界”來學習了解
    2022-09-09
  • C語言算法金手指摩爾投票法手撕絕大多數(shù)問題

    C語言算法金手指摩爾投票法手撕絕大多數(shù)問題

    這篇文章主要為大家介紹了C語言算法之金手指摩爾投票法手撕絕大多數(shù)問題的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • C++中調用復制(拷貝)函數(shù)的三種情況總結

    C++中調用復制(拷貝)函數(shù)的三種情況總結

    這篇文章主要介紹了C++中調用復制(拷貝)函數(shù)的三種情況總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言內存泄漏常見情況及解決方案詳解

    C語言內存泄漏常見情況及解決方案詳解

    這篇文章主要為大家介紹了C語言內存泄漏常見情況及解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • C++實現(xiàn)LeetCode(119.楊輝三角之二)

    C++實現(xiàn)LeetCode(119.楊輝三角之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(119.楊輝三角之二),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • Qt創(chuàng)建SQlite數(shù)據(jù)庫的示例代碼

    Qt創(chuàng)建SQlite數(shù)據(jù)庫的示例代碼

    本文主要介紹了Qt創(chuàng)建SQlite數(shù)據(jù)庫的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • 詳解C++中static的用法

    詳解C++中static的用法

    這篇文章主要介紹了c++中static的用法詳解,C 語言的 static 關鍵字有三種用途,具體內容詳情大家跟隨腳本之家小編一起學習吧
    2018-05-05
  • C語言樹與二叉樹基礎全刨析

    C語言樹與二叉樹基礎全刨析

    二叉樹可以簡單理解為對于一個節(jié)點來說,最多擁有一個上級節(jié)點,同時最多具備左右兩個下級節(jié)點的數(shù)據(jù)結構。本文將詳細介紹一下C中二叉樹與樹的概念和結構,需要的可以參考一下
    2022-04-04
  • C/C++ 中實現(xiàn)讓控制臺暫停的方法

    C/C++ 中實現(xiàn)讓控制臺暫停的方法

    這篇文章主要介紹了C/C++ 中實現(xiàn)讓控制臺暫停的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論