C語言實現簡單注釋轉換

2021-08-22 08:43:21 字數 2006 閱讀 1700

我們常見的注釋轉換有兩種風格:c語言注釋風格和c++注釋風格。

c語言注釋:/* 注釋內容 */

特點:允許多行注釋,但不允許巢狀注釋

c++注釋: //注釋內容

特點:允許巢狀注釋,但不允許多行注釋

這個程式的目的就是為了將c語言的注釋轉換成c++的注釋。我們給定乙個」input.c」,程式執行後產生乙個對應的」output.c」

這個程式其實內在很複雜,有很多種情況。

如上圖所示的七種情況,我們如果用單純的if…else…來表示,那其中的巢狀情況就太過於複雜。我們考慮用狀態機來處理這個問題,分析情況簡單描繪如下圖。

具體**如下:

commentconvert.h

#include

typedef enum state

state;

void commentconvert(file*pfread, file* pfwrite);

void donulstate(file* pfread, file* pfwrite, state* ps);

void docstate(file* pfread, file* pfwrite, state* ps);

void docppstate(file* pfread, file* pfwrite, state* ps);

#endif

commentconvert.c
#include"commentconvert.h"

void commentconvert(file*pfread, file*pfwrite)

break;

case c_state:

break;

case cpp_state:

break;

default:

break;}}

}void donulstate(file* pfread, file* pfwrite, state*ps)

break;

case

'/':

break;

default:

break;}}

break;

case eof:

break;

default:

break;

}}void docstate(file* pfread, file* pfwrite, state* ps)

else

*ps = nul_state;

}break;

case

'*':

break;

default:

break;}}

break;

case

'\n':

break;

default:

break;

}}void docppstate(file* pfread, file* pfwrite, state* ps)

break;

case eof:

break;

default:

break;}}

執行結果:

執行後在原來的工程目錄下新生成了乙個output.c檔案,我們開啟這個檔案如下:

可以看到我們已經很好的完成了c注釋向c++注釋的轉換。

C語言實現注釋轉換

注釋轉換是指將input.c程式中c語言注釋全部轉化為c 注釋,並在output.c中展現出來 可能出現的情況如下圖所示 實現如下 test,c include comment covert.h includeint main pfwrite fopen output.c w if null pfw...

實現c語言注釋轉換為c 注釋

這篇文章將實現 c語言注釋轉換為c 注釋 例如,將下面的c語言注釋轉換為c 注釋 1.一般情況 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 ...

簡單實現注釋轉換( )

這只是簡單實現,將乙個正確 中的注釋進行轉換,如果 裡面有錯誤的話,可能會出現問題,比如出現了 但是不出現 如果這時候檔案結束了,這樣注釋轉換就會出錯,所以轉換前,應先保證注釋的正確性。以下情況均是在注釋正確的情況下進行 話不多說,進入正題。先分析一波 我們讀取乙個.c檔案時,第乙個可能讀取到的字元...