我們常見的注釋轉換有兩種風格: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檔案時,第乙個可能讀取到的字元...