簡單實現注釋轉換( )

2021-08-22 07:29:22 字數 3019 閱讀 4663

這只是簡單實現,將乙個正確**中的注釋進行轉換,如果**裡面有錯誤的話,可能會出現問題,比如出現了 /* 但是不出現 */ 如果這時候檔案結束了,這樣注釋轉換就會出錯,所以轉換前,應先保證注釋的正確性。(以下情況均是在注釋正確的情況下進行)

話不多說,進入正題。

先分析一波:

我們讀取乙個.c檔案時,第乙個可能讀取到的字元可能有/、正常**、和eof(檔案為空,直接為檔案尾)

首先,我們將這幾種情況用列舉型別羅列出來:

typedef enum

state

state;

我們可以將它們幾種狀態的轉換關係再畫出來:

黑色的字型為狀態之間轉換的條件。

接下來,我們用**來實現:

採用多檔案編譯的方式:

commentconvert.h

#ifndef __commentconvert_h__

#define __commentconvert_h__

#include

#include

typedef enum state

state;

void commentconvert(file *pread,file *pwrite); //注釋轉換

void do_nul_state(file *pread,file *pwrite, state *pstate); //無狀態執行操作

void do_c_state(file *pread,file *pwrite, state *pstate); //c注釋狀態執行操作 /*

void do_cpp_state(file *pread,file *pwrite, state *pstate); //c++狀態執行操作 //

#endif // !__commentconvert_h__

commentconvert.c
#include"commentconvert.h"

void commentconvert(file *pread, file *pwrite)

}

}void do_nul_state(file *pread, file *pwrite, state *pstate)

break;

case

'/': //c++注釋開始

break;

default: //正常讀到**即 2/3 等情況

break; }}

break;

case eof: //檔案的結束

*pstate = end_state;

break;

default: //正常**

break;

}}void do_c_state(file *pread, file *pwrite, state *pstate) //c注釋的處理

else

//考慮到連續兩個c注釋的問題 比如 /* int a = 1; */ /* int b = 1;*/ 將它們放在兩行

*pstate = nul_state;

}break;

case

'*': // **/ ******/ 等問題

break;

default: //正常讀到**

break;}}

break;

case

'\n': //多行注釋

break;

default:

break;

}}void do_cpp_state(file *pread, file *pwrite, state *pstate)

break;

case eof: //檔案尾

*pstate = end_state;

break;

default: //正常讀到**

fputc(first, pwrite);

break;}}

test.c
#include"commentconvert.h"

void test()

file *pwrite = fopen("output.c", "w");

if (pread == null)

commentconvert(pread, pwrite);

fclose(pread);

pread = null;

fclose(pwrite);

pwrite = null;

}int main()

測試** input.c

2/3

//**中只出現乙個/的情況

/*這是一段**

這段**只用作測試

注釋為新增的各種情況

*/int fib(int n)

return ret; //返回求得的第n個fib的值 /**/

}

測試結果:

我們也可以將前面的流更改為標準的輸入輸出流,這樣我們就可以在cmd視窗裡輸入並顯示輸出了,不過它的顯示是輸入一行輸出一行,所以看起來可能不是很容易,不過原理與前面**相同。

以上即為實現注釋轉換的全部內容,不足之處還望指正。

C語言實現簡單注釋轉換

我們常見的注釋轉換有兩種風格 c語言注釋風格和c 注釋風格。c語言注釋 注釋內容 特點 允許多行注釋,但不允許巢狀注釋 c 注釋 注釋內容 特點 允許巢狀注釋,但不允許多行注釋 這個程式的目的就是為了將c語言的注釋轉換成c 的注釋。我們給定乙個 input.c 程式執行後產生乙個對應的 output...

實現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注釋轉換為c 注釋)

對於注釋轉換首先給出我的測試圖 由圖可以看出將左邊的c語言注釋轉換為右邊c 注釋就是注釋轉換 首先說明一下轉換思想方法 1.建立兩個檔案input.c和output.c,input.c裡面用來讀取c語言的注釋,output.c裡面儲存轉換成為c 的注釋,中間的轉換過程就是 完成,當然檔案名字和作用自...