注釋轉換 c注釋 c 注釋

2021-08-21 04:08:03 字數 2941 閱讀 8162

本專案基於乙個狀態機的思想,每次處理完成之後通過狀態的裝換繼續處理後邊的內容。另外,利用各類的檔案操作函式,實現將將c風格的注釋裝換成c++風格的注釋的乙個簡單功能。大概如下圖:

什麼是狀態機?

在本專案中,會用到四種狀態,既空狀態(正常**區)、c注釋狀態(c風格注釋區)、c++注釋狀態(c++風格注釋區)、檔案結束狀態(eof),下面是四種狀態的裝換圖:

因為c注釋區里的內容不可能包括檔案結束標誌,所以c注釋狀態不可能存在與檔案結束狀態之間的轉換。

// 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++注釋問題

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

commentcovert.h
#ifndef __commentcovert_h__

#define __commentcovert_h__

enum status

;#include

#include

#pragma

warning(disable:4996)

void commentcovert(file *pfin, file *pfout);

void donulstaus(file *pfin, file *pfout, enum status *ps);

void docstaus(file *pfin, file *pfout, enum status *ps);

void docppstaus(file *pfin, file *pfout, enum status *ps);

#endif //__commentcovert_h__

commentcovert.c
//為了方便理解,下面的**存在向原狀態裝換的過程,這是不必要的,已經注釋掉。

#include"commentcovert.h"

//正常**處理

void donulstaus(file *pfin, file *pfout, enum status *ps)

break;

case

'/':

break;

default:

break;}}

break;

case eof:

break;

default:

break;}}

//c風格**注釋區處理

void docstaus(file *pfin, file *pfout, enum status *ps)

else

*ps = nul_status;

}break;

case

'*':

break;

default:

break;}}

break;

case

'\n':

break;

default:

break;}}

//c++風格**注釋區處理

void docppstaus(file *pfin, file *pfout, enum status *ps)

break;

case eof:

fputc(first, pfout);

*ps = end_status;

break;

default:

fputc(first,pfout);

/**ps = cpp_staus;*/

break;}}

fseek的簡單理解
seek_set: 檔案開頭

seek_cur: 當前位置

seek_end: 檔案結尾

其中seek_set,seek_cur和seek_end依次為0,1和2

例如:fseek(fp,100l,0);把stream指標移動到離檔案開頭100位元組處;

fseek(fp,100l,1);把stream指標移動到離檔案當前位置100位元組處;

fseek(fp,-100l,2);把stream指標退回到離檔案結尾100位元組處。

test.c
#include"commentcovert.h"

void commentcovert(file *pfin, file *pfout)}}

int main()

pfout = fopen("output.c", "w");

if (pfout == null)

//注釋轉換

commentcovert(pfin, pfout);

fclose(pfin);

pfin = null;

fclose(pfout);

pfout = null;

return

0; }

源**:commentcover

注釋轉換(C注釋轉換為c 注釋)

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

注釋轉換C 注釋》

注意 中所用到的fopen,fwrite,fread等檔案操作函式在通訊錄檔案流部落格中做了介 紹 ungetc 函式是將從檔案中讀取的乙個字元還回到緩衝區,即檔案中去 分析思路圖 分析思路圖 自定義標頭檔案部分 ifndef comment convert h define comment con...

注釋轉換 C注釋轉換為標準C 注釋

注釋轉換 c 注釋轉換為標準c語言注釋 直接上 include include include typedef enum state state typedef enum tag tag pragma warning disable 4996 state annotationconvert file...