注釋轉換程式

2021-08-30 13:51:06 字數 3214 閱讀 8393

這個程式的目的是:把c注釋全部轉換為c++注釋

程式有以下幾個狀態:

1、無狀態:**的正文部分2、c狀態:注釋方式為c注釋3、c++狀態:注釋方式為c++注釋4、end:結束狀態

這幾種狀態的關係

首先我們要開啟input.c檔案,對這個檔案內部的檔案進行讀取,然後處理,否則直接提示使用者有錯誤。 接下來,我們還要開啟output.c檔案,對處理以後的**進行寫入。

轉換機制:先建立乙個狀態機,在讀取到檔案時將初始狀態先設為null_state,然後通過fputc函式

從檔案中按乙個字元乙個字元的方式來讀取,當讀到'/*'時,說明接下來讀到的是c_state狀態,然後將狀態機的

狀態改為c_state狀態,進入c狀態後,接下來就是要判斷是否讀到'*/',如果讀到就將狀態機設定為

null_state狀態。當然在進去c狀態後還要考慮其他很多情況,具體在**中來看。當讀到'//'時,則進入

cpp_state狀態,這時將狀態機設定為cpp_state狀態,cpp注釋是按照行來注釋的,所以判斷cpp狀態結束

的標誌自然就是'\n'了。

input.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;/****x

// 4.多行注釋問題

////int i=0;

//int j = 0;

//int k = 0;

//int k = 0;

// 5.連續注釋問題

////

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

//*

// 7.c++注釋問題

// /**************/

注釋轉換程式

**實現

commentconver.h

#ifndef __comment_convert_h__

#define __comment_convert_h__

#define _crt_secure_no_warnings 0

#include#includeenum state

;void donulstate(file* pfin, file* pfout, enum state* ps);

void docstate(file* pfin, file* pfout, enum state* ps);

void docppstate(file* pfin, file* pfout, enum state* ps);

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

#endif //__comment_convert_h__

commentconver.c

#include "commentconvert.h"

void donulstate(file* pfin, file* pfout, enum state* ps)

break;

case '/':

break;

default:

break;

}} break;

case eof:

fputc(first, pfout);

*ps = end_state;

break;

default:

fputc(first, pfout);

break; }}

void docstate(file* pfin, file* pfout, enum state* ps)

else

*ps = nul_state;

}break;

case '*':

break;

default:

fputc(first, pfout);

fputc(second, pfout);

break;

}} break;

default:

fputc(first, pfout);

break; }}

void docppstate(file* pfin, file* pfout, enum state* ps)

break;

case eof:

fputc(first, pfout);

*ps = end_state;

break;

default:

fputc(first, pfout);

break; }}

void commentconvert(file* pfin, file* pfout)

}}

test.c

#include"commentconvert.h"

void test()

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

if (null == pfout)

//注釋轉換

commentconvert(pfin, pfout);

fclose(pfin);

pfin = null;

fclose(pfout);

pfout = null;

}int mian()

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