將c風格的注釋轉換成cpp風格

2021-08-13 03:51:32 字數 2401 閱讀 5567

首先要將文字分成四個狀態:

1.普通狀態(nullstatus)

2.c狀態(cstatus)

3.cpp狀態(cpstatus)

4.eof狀態(eofstatus)

四個狀態之間的關係如下:

程式**如下:

main.c

#include"convert.h"

int main()

convert.h

#ifndef __covert_h__

#define __covert_h__

#include

#include

#define inputfile "input.c"

#define outputfile "output.c"

enum;

void convert_main();

#endif

convert.c

#include"convert.h"

int status = nullstatus;

void do_null_status(file *ifp,file *ofp)

}break;

case eof:

status = eofstatus;

break;

default:

fputc(c, ofp);

status = nullstatus;

break;

}}void do_cpp_status(file *ifp, file *ofp)

}void do_c_status(file *ifp, file *ofp)

}break;

case eof:

status = eofstatus;

break;

case

'\n':

fputc(c, ofp);

fputc('/', ofp);

fputc('/', ofp);

status = cstatus;

break;

default:

fputc(c, ofp);

status = cstatus;

break;

}}static

void convert_work(file *ifp, file *ofp)

}}void convert_main()

convert_work(ifp, ofp);

fclose(ifp);

fclose(ofp);

}

測試用例 input.c的內容:

// 1.一般情況

int num = 0;

/* int i = 0; */

// 2.換⾏問題

/* int i = 0; */

int j = 0;

/* int i = 0; */

int j = 0;

// 3.匹配問題

/*int i = 0;/****xx*/

// 4.多行注釋問題

/*int i=0;

int j = 0;

int k = 0;

*/int k = 0;

// 5.連續注釋問題

/*int a = 0;*/

/*int b = 0;*/

// 6.連續的**/問題

/***/

// 7.c++注釋問題

// /**************/

程式執行之後,output.c的內容:

// 1.一般情況

int num = 0;

// int i = 0;

// 2.換⾏問題

// int i = 0;

int j = 0;

// int i = 0;

int j = 0;

// 3.匹配問題

//int i = 0;/****xx

// 4.多行注釋問題

////int i=0;

//int j = 0;

//int k = 0;

//int k = 0;

// 5.連續注釋問題

//int a = 0;

//int b = 0;

// 6.連續的**/問題

//*// 7.c++注釋問題

// /**************/

c的注釋轉換成cpp

我們知道注釋轉換中有分為四個模式 nul 格式 開始讀取注釋 c格式 c 格式 end格式 結束程式 下面我用一張圖來解釋如下的關係。該圖清晰地展示了這四種格式的關係,下面用 來實現上圖。commentconvert.h define crt secure no warnings 1 ifndef ...

C語言 注釋轉換(C風格 C 風格)

其中有一些檔案操作函式,不懂的可以看這篇部落格 首先,我們要知道乙個檔案中至少有五種狀態,我們用狀態圖表示 解讀 我們從 不是注釋 的狀態開始,請看下圖 有以下幾種情況需要注意 轉變成 轉變成 判斷是否為換行,如果換行需要輸入 轉變成 如果準備出注釋的時候,遇到 先保留看下乙個字元是不是 如果是 在...

Child風格對話方塊轉換成Popup風格對話方塊

對於同乙個dialog資源,在不同的環境中可能需要顯示的方式不一樣。本人在開發中遇到的就是這種問題,在一種環境中需要的是對話方塊做嵌入式child顯示,而另一處環境需要的是popup彈出式顯示,有的人說弄兩個資源,乙個是子對話內嵌另乙個是彈出式對話方塊,這樣又不免重複了。首先,資源裡的對話方塊設定為...