如上圖 利用狀態機的思想來解決c注釋到c++注釋的轉換。(不允許注釋巢狀)
在狀態內處理,狀態間跳轉,根據不同的的事情發生相應的動作,並進行相應的狀態轉換。
程式共有四種狀態 :nulstate(無狀態),cstate(c狀態),cppstate(c++狀態),endstate(結束狀態)。
1.當為無狀態時,遇到特定標記時進行狀態轉換,它有可能保持無狀態,可能進入c狀態,可能進入c++狀態,也可能進入結束狀態。
2.當為cpp狀態時,遇到特定標記時進行狀態轉換,它有可能保持cppstate(c++狀態),可能進入nulstate(無狀態),也可能進入endstate(結束狀態)。
3.當為c狀態時,遇到特定標記時進行狀態轉換,它有可能保持cstate(c狀態),可能進入nulstate(無狀態)。
4.當為結束狀態時,轉換束。
#ifndef __commentconvert_h__
#define __commentconvert_h__
#define _crt_secure_no_warnings 1
#include
#include
typedef
enum state
state;
//無狀態處理
void donulstate(file*pfin, file*pfout,state* state);
//c狀態處理
void docstate(file*pfin, file*pfout, state* state);
//c++狀態處理
void docppstate(file*pfin, file*pfout, state* state);
#endif //__commentconvert_h__
#include"commentconvert.h"
void donulstate(file*pfin, file*pfout,state *state)
break;
case
'*'://如果第二個字元是『*』,進入c狀態
break;
default://如果是其他字元,保持無狀態
break;}}
break;
case eof ://如果到達檔案結尾,進入結束狀態
break;
default://如果第乙個字元是非『/』字元則進行無狀態處理
break;
}}void docppstate(file*pfin, file*pfout, state* state)
break;
case eof://如果到達檔案結尾,進入結束狀態
*state = end_state;
break;
default://如果第乙個字元是非『\n』,說明c++狀態沒有結束,字元進行c++狀態處理
fputc(first, pfout);
break;
}}void docstate(file*pfin, file*pfout, state* state)
break;
default://如果是其他字元,字元進行c狀態處理
break;}}
break;
case
'\n'://進行c狀態的多行注釋處理
fputc(first, pfout);
fputc('/', pfout);
fputc('/', pfout);
break;
default://如果是其他字元,字元進行c狀態處理
break;}}
#include"commentconvert.h"
void commentconvert(file*pfin, file*pfout)
}}void test()
if (pfout == null)
commentconvert(pfin, pfout);
fclose(pfin);
fclose(pfout);
}int main()
**執行結果:
注釋轉換小專案(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 x 4.多行注釋 int i 0 i...
c語言到c 注釋轉換
問題的引入 為什麼需要注釋?問題的解答 1.使用一些注釋符來增加我們程式的可讀性,2.遮蔽掉一些不需要程式。注釋符一般分為兩種 一種是以 開頭,在中間加上注釋內容,並以 結尾的段落注釋符。在 和 之間的即為注釋。另一種是以 開頭,後面加注釋內容的單行注釋符。在 之後的即為注釋。其中 1.c語言的注釋...
注釋轉換 c注釋 c 注釋
本專案基於乙個狀態機的思想,每次處理完成之後通過狀態的裝換繼續處理後邊的內容。另外,利用各類的檔案操作函式,實現將將c風格的注釋裝換成c 風格的注釋的乙個簡單功能。大概如下圖 什麼是狀態機?在本專案中,會用到四種狀態,既空狀態 正常 區 c注釋狀態 c風格注釋區 c 注釋狀態 c 風格注釋區 檔案結...