注釋轉換專案精益版實現

2021-07-25 07:35:15 字數 3160 閱讀 9565

這道題對於新手來說,剛開始理解起來,確實有點難度。然而事實的真相卻是相當簡單,只要有一點字元操作經驗的人都能夠掌握。

不多說,進入正題:

我們的目標是將c語言中的注釋轉化為c++注釋風格。

c注釋風格: /**/

c++風格://

我們要採用檔案操作來實現函式。

對乙個檔案我們要根據 「讀」的字元,去判斷他是哪一種風格。

/* 我們可以知道它是c注釋風格了 函式中我們用c_state列舉常量表示,進行相應的c-》c++的轉化

// 我們可以知道它是c++注釋風格了 函式中我們用cpp_state列舉表示,進行c++的轉化

其他的我們可以認為是正常字元 函式中我們用normal_state列舉表示,進行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 k = 0;

// 5.連續注釋問題

/**//**/

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

/***/

// 7.c++注釋問題

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

方便大家拷貝

首先標頭檔案準備:

convert.h

#ifndef _comment_convert_h

#define _comment_convert_h

#include

#include

#define readfilename "input.txt"

#define writefilename "output.txt"

//風格的幾種狀態進行編制

static

enum state

;void commentconvert(file*fread, file*fwrite);//轉換函式

void do_c_state(file*fread, file*fwrite);//對c注釋進行轉換

void do_cpp_state(file*fread, file*fwrite);//對c++注釋進行轉換

void do_normal_state(file*fread, file*fwrite);//正常字元處理,以及風格分類

#endif

接下來,就是測試部分了,

test.c

#include"convert.h"

#pragma warning(disable:4996)

int main()

file*fwrite = fopen(writefilename, "w");

if (null == fwrite)

commentconvert(fread, fwrite);

printf("**

****

*注釋轉換結束**

***\n");

fclose(fread);

fclose(fwrite);

getchar();

return

0;}

最後各個函式實現部分

main.c

#include"convert.h"

enum state state = normal_state;

void commentconvert(file*fread, file*fwrite)

}}void do_c_state(file*fread, file*fwrite)

if (third=='/')

fputc(third, fwrite);

state = normal_state;

break;

case

'*':

third = fgetc(fread);

fputc(first, fwrite);

if (third == '/')

break;

default:

fputc(first, fwrite);

fputc(second, fwrite);

break;

}break;

case

'\n':

putc(first, fwrite);

putc('/', fwrite);

putc('/', fwrite);

break;

case eof:

state = end_state;

default:

fputc(first, fwrite);

break;

}}void do_cpp_state(file*fread, file*fwrite)

}void do_normal_state(file*fread, file*fwrite)

else

if (second == '/')

else

break;

case eof:

state = end_state;

default:

fputc(first, fwrite);

break;}}

dos結果:

注釋轉換專案

注釋轉換 由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...

敏捷 專案管理 精益思想

重點 實現商業價值和使產品開發之外的活動最小化 精髓 改善 旨在通過持續性地實施系統性變更來優化生產系統。一 精益生產為基礎的基本體系 1.多數錯誤是系統性的 1 很多團隊陷入失敗的泥潭之中,因為它們遵循著乙個劣質的過程或一種糟糕的管理方法,並且過分相信這一過程。2 管理層看上去更傾向於過分重視過程...

專案 注釋轉換

此次的注釋轉換就是將c語言中的注是轉換成c 的注釋。一 注釋轉換的基本思路 在注釋轉換中,將會遇到5種狀態 普通狀態 遇到 狀態 c 注釋狀態 c注釋狀態 遇到 狀態 1.以普通狀態 normal 開始,如果遇到 將進入遇到 狀態 found slash 否則將繼續處於normal狀態 2.進入 狀...