@ 注意: **中所用到的fopen,fwrite,fread等檔案操作函式在通訊錄檔案流部落格中做了介
紹:
@ ungetc 函式是將從檔案中讀取的乙個字元還回到緩衝區,即檔案中去;
@ 分析思路圖
@分析思路圖
# 自定義標頭檔案部分:
#ifndef __comment_convert_h__
#define __comment_convert_h__
#include#include#define inputfilename "input.c"
#define outputfilename "output.c"
typedef enum convert_start//列舉表示操作選項;
statetype;
void commentconvert();
void convertwork(file *read,file *write);//注釋轉換操作選項函式;
void docstate(file *read,file *write);//c 轉換為 cpp函式;
void donullstate(file *read,file *write);//普通語句空轉換函式;
void docppstate(file *read,file *write);//cpp 轉換 c 函式;
#endif //__comment_convert_h__
# 函式功能實現部分:
#define _crt_secure_no_warnings 1
#include"commentconvert.h"
statetype state;
void donullstate(file *read,file *write)//無轉換操作函式;
else if(second == '/')
else //普通語句就直接寫入;
break;
case eof:
fputc(first,write);
state = end_start ;//注釋結束,狀態調整;
break;
default://開始就為普通內容,直接寫入;
fputc(first,write);
break; }}
void docstate(file *read,file *write)//c轉換為cpp;
if(third == '\n')
}else
break;
case '\n'://如果是換行,那就是連續注釋,就將下一行開頭加入cpp注釋;
fputc(first,write);
fputc('/',write);
fputc('/',write);
break;
case eof:
fputc(first,write);
state = end_start ;
break;
default:
fputc(first,write);
break;
}} void docppstate(file *read,file *write)//cpp轉換為c;
}void convertwork(file *read,file *write)//函式操作選項; }}
void commentconvert()//讀寫檔案函式;
//寫入新建立的"output.c"檔案;
pwrite = fopen(outputfilename, "w");
if(pwrite == null)
//呼叫操作選項函式;
//關閉已經開啟的檔案;
convertwork(pread,pwrite);
fclose(pread );
fclose (pwrite );
}
# 主函式部分:
#include"commentconvert.h"
void test()
int main()
# input.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++注釋問題
// /**************/
# 函式執行結果 「output.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++注釋問題
// /**************/
簡單的注釋轉換功能, 功能比較單一,有時間我會繼續完善!
ps: 愛拼才會贏!
thanks!
注釋轉換 c注釋 c 注釋
本專案基於乙個狀態機的思想,每次處理完成之後通過狀態的裝換繼續處理後邊的內容。另外,利用各類的檔案操作函式,實現將將c風格的注釋裝換成c 風格的注釋的乙個簡單功能。大概如下圖 什麼是狀態機?在本專案中,會用到四種狀態,既空狀態 正常 區 c注釋狀態 c風格注釋區 c 注釋狀態 c 風格注釋區 檔案結...
注釋轉換(C注釋轉換為c 注釋)
對於注釋轉換首先給出我的測試圖 由圖可以看出將左邊的c語言注釋轉換為右邊c 注釋就是注釋轉換 首先說明一下轉換思想方法 1.建立兩個檔案input.c和output.c,input.c裡面用來讀取c語言的注釋,output.c裡面儲存轉換成為c 的注釋,中間的轉換過程就是 完成,當然檔案名字和作用自...
注釋轉換 C注釋轉換為標準C 注釋
注釋轉換 c 注釋轉換為標準c語言注釋 直接上 include include include typedef enum state state typedef enum tag tag pragma warning disable 4996 state annotationconvert file...