程式碼排序 |
尚未結案
|
shing.net
中階會員 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
|
Albertz
初階會員 發表:2 回覆:57 積分:31 註冊:2002-09-05 發送簡訊給我 |
|
shing.net
中階會員 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
shing.net:程式碼縮排在C中是比較好處理的,注意的是 /*、*/、//、{、}這幾個符號而已我列出我初寫的程式供參考, 於Form上放一個Edit1作為你Tab Stop的數據我預設值為2,放一個 OpenDialog1開啟一個.Cpp檔,一個Button作為執行,先聲明本程式並未 考慮到字串裡上述的那些符號及if、else等其他判斷, 我想留給你作功課!輸出檔案為你開啟的 Cpp檔名前加_(底線)。 #include "stdio.h" void __fastcall TForm1::Button1Click(TObject *Sender) { FILE *file1; // 讀入 FILE *file2; // 輸出 if (OpenDialog1->Execute()) { file1=fopen(OpenDialog1->FileName.c_str(),"r"); AnsiString S=OpenDialog1->FileName; int j=S.LastDelimiter("\\"); S="_" S.SubString(j 1,S.Length()-1); S= OpenDialog1->FileName.SubString(1,j) S; if (FileExists(S)) DeleteFile(S.c_str()); file2=fopen(S.c_str(),"w"); char msg[254]; AnsiString Msg; fseek(file1, 0, SEEK_SET); int Tab_Stop=StrToIntDef(Edit1->Text,2); int Point_s=0; bool TF=true; while (!feof(file1)) { S=""; StrPCopy(msg,'\0'); fgets(msg, 254, file1); Msg=msg; Msg=Msg.Trim(); if (Msg.SubString(1,2) != "/*" && TF) { if (Msg.SubString(1,2) != "//") { if (Msg.Pos("}") != 0) Point_s--; Msg=Append_Str(Msg," ",(Point_s*Tab_Stop),0); if (Msg.Pos("{") != 0) Point_s ; } } else { if (Msg.Pos("*/") !=0 ) TF=true; else TF=false; } fprintf(file2,"%s\n",Msg.c_str()); } if (fclose(file1) != 0) fclose(file1); if (fclose(file2) != 0) fclose(file2); } delete file1; delete file2; } //--------------------------------------------------------------------------- // 字串,補入字元,位數,0:補左 1:補右 AnsiString __fastcall TForm1:: Append_Str(AnsiString DataString,AnsiString WordString,int DLen,int L_R) { AnsiString Ret=DataString,S=""; for (int i=0; i < DLen;i ) { S =WordString; } if (L_R==0) // Left Ret=S Ret; else Ret =WordString; return Ret; } 請參考!Andy Chang
------
Andy Chang |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |