我們知道注釋轉換中有分為四個模式 nul_格式(開始讀取注釋)、c格式、c++格式、end格式 (結束程式)。下面我用一張圖來解釋如下的關係。
該圖清晰地展示了這四種格式的關係,下面用**來實現上圖。
commentconvert.h
#define _crt_secure_no_warnings 1
#ifndef __comment_convert_h__
#define __comment_convert_h__
#include
#include
enum state
;void docommentconvert(file*pfin, file*pfout);//宣告,開始轉換
void donulstate(file*pfin, file*pfout, enum state*s);//指標接收);//nul_格式
void docstate(file*pfin, file*pfout, enum state*s);//c格式
void docppstate(file*pfin, file*pfout, enum state*s);//c++格式
#endif // __comment_convert_h__
commentconvert.c
#include"commentconvert.h"
enum state state = nul_state;
void docommentconvert(file*pfin, file*pfout)
}}void donulstate(file*pfin, file*pfout, enum state*s)
break;
}case eof: //為eof時結束
*s = end_state;
break;
default: //其他情況下 普通 字元 寫到 pfout流中
fputc(first, pfout);
*s = nul_state;
break;
}}void docstate(file*pfin, file*pfout, enum state*s)
break;
}case
'\n': //多行注釋
fputc('\n', pfout);
fputc('/', pfout);
fputc('/', pfout);
*s = c_state;
break;
default:
fputc(first, pfout);
*s = c_state;
break;
}}void docppstate(file*pfin, file*pfout, enum state*s)
}
test.c
#define _crt_secure_no_warnings 1
#include"commentconvert.h"
void test()
file* pfout = fopen("output.c.txt", "w");//開啟 output.c流
if (pfout == null)
docommentconvert(pfin, pfout);
fclose(pfin);
fclose(pfout);
}int main()
下面為結果介面:
由此可看出注釋轉換的部分。
此次程式所需注意的地方:
1、建立檔案的部分一定要注意 在之後要呼叫開始轉換的那個函式,並且要注意fopen與fclose要連用,缺一不可。
2、在commentconvert.c部分要注意cpp部分的轉換,在其中第乙個元素為』/』的情況在nul的函式中已經考慮了一次,所以在cpp中要考慮另外的幾種狀況。
本人是新手,可能其中有些問題,希望給予意見或建議。
將c風格的注釋轉換成cpp風格
首先要將文字分成四個狀態 1.普通狀態 nullstatus 2.c狀態 cstatus 3.cpp狀態 cpstatus 4.eof狀態 eofstatus 四個狀態之間的關係如下 程式 如下 main.c include convert.h int main convert.h ifndef c...
數字轉換成字元(C )
昨天數字轉換字元的問題捆饒了我一天,可能大家聽了會笑話我,這麼簡單的問題一天都沒有搞定,不過沒關係昨天用了乙個下午又加上晚上的一些時間算是能解決部分的問題了。問題情況說明 從資料庫讀取乙個float型別的資料,然後通過實體欄位的繫結顯示在介面上 要求不能有科學記數法 問題解決 首先要先了解各個型別的...
日期轉換成年月日(C語言 詳細注釋)
天數轉換成具體日期 給出某年的第多少天,算出這天的日期 具體日期轉換成天數 給定日期得出是該年的第多少天 includeint isleap int year int day of year int year,int month,int day void monthday int year,int ...