這道題對於新手來說,剛開始理解起來,確實有點難度。然而事實的真相卻是相當簡單,只要有一點字元操作經驗的人都能夠掌握。
不多說,進入正題:
我們的目標是將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.進入 狀...