此次的注釋轉換就是將c語言中的注是轉換成c++的注釋。
一、注釋轉換的基本思路
在注釋轉換中,將會遇到5種狀態(普通狀態、遇到\狀態、c++注釋狀態、c注釋狀態、遇到*狀態):
1.以普通狀態(normal)開始,如果遇到 / 將進入遇到/狀態(found_slash),否則將繼續處於normal狀態 ;
2.進入 /狀態(foungd_slash)後,繼續獲取字元,如果遇到 *將進入c注釋狀態(c_comment)、如果遇到 /將進入c++注釋狀態(cpp_comment)、除這倆種以外將返回普通狀態(normal);
3.進入c注釋狀態(c_comment)後,繼續獲取字元,如果遇到* 將進入遇到*狀態(found_star),否則繼續保持c注釋(c_comment);
注:進入c注釋後,將要判斷是否遇到 \n,如果遇到,將輸入\n和\\;
4.進入c++注釋(cpp_comment)後,繼續獲取字元,如果遇到遇到 \n將進入普通狀態(normal),否則繼續保持c++注釋狀態(cpp_comment)。
5.進入*狀態(found_star)後將繼續進行獲取字元,如果遇到*將繼續處於*狀態(found_star),如果遇到 /將進入普通狀態(normal),除此之外,將返回c注釋狀態(c_comment)。
在以上**中,如果是試圖檢視下乙個字元時,用完記得要進行歸還。
二、注釋轉換思路圖
三、注釋轉換模擬檔案
//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 k = 0;
// 5.連續注釋問題
/**//**/
// 6.連續的**/問題
/***/
// 7.c++注釋問題
// /*******x
四、注釋轉換程式**
#include#includetypedef enum statestate;
void commentconvert(file* input,file* output)
switch(state)else
break;
case found_slash:
if(ch == '*')else if(ch == '/')else
break;
case cpp_comment:
if(ch == '\n')else
break;
case c_comment:
if(ch == '*')else if(ch == '\n')else
break;
case found_star:
if(ch == '*')else if(ch == '/')else
}else
break;}}
} int main()
五、程式輸出結果
//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 k = 0;
// 5.連續注釋問題
////
// 6.連續的**/問題
//*// 7.c++注釋問題
// /*******x
注釋轉換專案
注釋轉換 由c語言的注釋全部轉換為c 的注釋風格。從input.c檔案裡讀取的內容注釋轉換儲存到output.c檔案中。狀態圖為 通常採用switch case語句來處理。input.c檔案裡的內容為 1.一般情況 int i 0 2.換行問題 int i 0 int j 0 int i 0 int...
小專案 注釋轉換
功能 將c注釋轉換為c 注釋 有普通 c cpp 結束四種狀態,各狀態轉換條件如下 status 定義列舉型別,表示四種狀態 include include convert.h enum sta status nulstat 將 狀態預製為普通狀態 void test nulstat file ip...
(C) 專案 注釋轉換
以下是 區 comment convert.h 標頭檔案 pragma once define input input.c define output output.c enum sta status 定義列舉型別,表示四種不同的狀態 void comment convert main file i...