注釋轉換(c c )小專案

2021-08-01 21:22:37 字數 3320 閱讀 3169

程式新思路

注釋轉換一開始去想的時候,會覺得很複雜。因為在乙個原始檔裡出現注釋的情況雖然不會太多,但是可能會出現各種各樣,形形色色的注釋,在轉換程度上去想的時候會覺得很複雜,不同的問題都要有不同的解決方法的。

在這裡簡單的羅列注釋轉換可能出現的幾種情況:

// 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.連續注釋問題

/**//**/

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

/***/

// 7.c++注釋問題

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

在注釋轉換的時候肯定不僅僅只有這些問題,可能有些也沒有想到位。所以我們會發現要處理的情況會很多,如果乙個乙個問題挨個解決的話,**就會有複雜性。我們可以這樣去給乙個思路:

圖中:注釋轉換過程使用了有限狀態機,可以給我們提供乙個新的思路。把注釋轉換切換到4中狀態中,根據有限的條件進入相應的狀態下去處理,並在根據條件進入下乙個狀態,依次迴圈,直到遇到eof結束。

有限狀態機(finite state machine)是乙個數學概念,如果把它運用於程式中,可以發揮很大的作用。它是一種協議,用於有限數量的子程式(「狀態」)的發展變化。每個子程式進行一些處理並選擇下一種狀態(通常取決於下一段輸入)。有限狀態機(fsm)可以用作程式的控制結構。

程式**:

標頭檔案annotationconversion.h

#ifndef __annotationconversion_h__

#include

#include

#define chmod "input.c"

#define final "output.c"

typedef enum

state

//列舉定義四種狀態

state;

void execute(file* pfin, file* pfout);//轉換函式

void donullconvert(file* pfin, file* pfout,state *state);//普通狀態

void docconvert(file* pfin, file* pfout,state *state);//c狀態函式

void docppconvert(file* pfin, file* pfout,state *state);//c++狀態函式

#endif//__annotationconversion_h__

實現部分annotationconversion.c

#include "annotationconversion.h"

void execute(file* pfin, file* pfout)//轉換函式

}}void donullconvert(file* pfin, file* pfout, state *state)//普通狀態操作函式

break;

case

'*':

//遇到/*依然輸出//並進入c注釋狀態

break;

default://正常語句:(例如/hehe/),直接寫進檔案。

break;}}

break;

case eof:

//結束標誌

break;

default:

//正常語句

break;

}}void docconvert(file* pfin, file* pfout, state *state)//c注釋狀態操作函式

else

}break;

default:

//針對/***/情況

fputc(first, pfout);

ungetc(second, pfin);

break;}}

break;

case

'\n':

//針對多行c語言注釋問題

break;

default:

fputc(first, pfout);

break;

}}void docppconvert(file* pfin, file* pfout, state *state)//c++注釋轉換操作函式

break;

case eof:

*state = eof_state;

break;

default:

fputc(first, pfout);

break;}}

測試部分test.c針對fopen、fread、fwrite三個函式在我之前寫的檔案流通訊錄中有詳細解釋

#include "annotationconversion.h"

#pragma warning (disable:4996)

int main()

file* pfwrite = fopen(final, "w");

if (pfwrite == null)

execute(pfread, pfwrite);

printf("轉換成功\n");

fclose(pfread);

fclose(pfwrite);

system("pause");

return

0;}

針對前面一開始提出的問題,程式執行注釋轉換後結果為:

小專案 注釋轉換

功能 將c注釋轉換為c 注釋 有普通 c cpp 結束四種狀態,各狀態轉換條件如下 status 定義列舉型別,表示四種狀態 include include convert.h enum sta status nulstat 將 狀態預製為普通狀態 void test nulstat file ip...

c語言小專案 注釋轉換

這篇部落格,我將整理關於注釋轉換的知識,首先,得知道,注釋轉換包括,c語言注釋轉 換成c 注釋,和c 注釋轉換成c語言注釋。c語言注釋的風格 這是c語言注釋 c 語言注釋風格 這是c 注釋風格 下面,我主要分析將所有的注釋轉換成c 注釋,即就是 c語言注釋轉 換成c 注釋。這樣的轉換會存在以下多種情...

C語言小專案 注釋轉換

這裡所說的注釋轉換是指將c風格的注釋轉換成c 風格的注釋。那麼我們如何來實現這個目的呢?首先我們得有乙個名為 input.c 的檔案 裡面寫著一段c風格的注釋和一些 而我們轉換後的注釋及 應該儲存在乙個名為 output.c 的檔案裡。要將 input.c中的內容轉換,我們就得將該檔案中的內容乙個乙...