




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上附件1:學(xué) 號: 27課 程 設(shè) 計題 目文本格式化學(xué) 院計算機(jī)科學(xué)與技術(shù)學(xué)院專 業(yè)計算機(jī)科學(xué)與技術(shù)班 級計算機(jī)1104班姓 名成霖指導(dǎo)教師吳利軍2013年6月17日題目:文本格式化一,問題描述:試寫一個文本格式化程序可以處理一個輸入文件,它按照用戶指定的下列版面規(guī)格參數(shù)重排版面:實(shí)現(xiàn)頁內(nèi)調(diào)整、分段、分頁等文本處理功能,排版結(jié)果存入輸出文本文件中。(1)輸出文件中字與字之間只留一個空格符,即實(shí)現(xiàn)多余空格符的壓縮。(2)輸出文件中,任何完整的字不能分割在兩行,行尾可以不齊,但行首要對齊。 (3)將頁號印在頁底空行中第2行的中間位置上。(4)版面要求的參數(shù)見題集p117。
2、(5)測試用例自己設(shè)計。二,設(shè)計:1, 版面要求的參數(shù)要包含: 頁長(Page Length)每頁內(nèi)文字(不計頁號)的行數(shù)。 頁寬(Page Wedth)每行內(nèi)文字所占最大字符數(shù)。 左空白(Left Margin)每行文字前的固定格數(shù)。 頭長(Heading Length)每頁頁頂所空行數(shù)。 腳長(Footing Length)每頁頁底所空行數(shù)(含頁號行) 起始頁號(Starting Page Number)首頁的頁號。2,概要設(shè)計:Ø 1:void printOut()該函數(shù)的功能是:格式化文本文件后必要提示用戶的信息說明Ø 2:void writeOut(FILE *
3、fp2,char c1)該函數(shù)的功能是:將字符輸出到文本文件和屏幕Ø 3:int zuokongbai(FILE * fp2)該函數(shù)的功能是:實(shí)現(xiàn)文本參數(shù)格式(左空白)Ø 4:void pageNumber(FILE * fp2,char * aIndex,int * page)該函數(shù)的功能是:輸出當(dāng)前頁碼 Ø 5:void out(int * columns,char * array,int * linage,FILE * fp2,int * page,int * size)該函數(shù)的功能是:判斷是否輸出到文本文件和屏幕Ø 6:void linageFu
4、ll(FILE * fp2,int * linage,int * columns,int * page)該函數(shù)的功能是:輸出頁首的格式(頭長+左空白)Ø 7:void readIn(FILE * fp1,FILE * fp2)該函數(shù)是整個程序的核心,執(zhí)行程序的主要邏輯判斷Ø 8:void main()3,實(shí)驗(yàn)設(shè)計程序代碼:#include<stdio.h>#include<stdlib.h>#include<string.h>int (PageLength) = 56;/頁長(一頁最大的行數(shù))int PageWedth = 60;/頁寬(
5、一行最大的字符數(shù))int LeftMargin = 10;/左空白(一行開始輸出的空格數(shù))int HeadingLength = 5;/頭長(一頁開始輸出的空行數(shù))int FootingLength = 5;/腳長(每頁最后空5行)int StaringPageNumber = 1;/起始頁號int page = 1;/記錄頁數(shù) int i = 0;/循環(huán)變量 char a5;/記錄page的char類型 char * aIndex = a;/數(shù)組a的首地址 /函數(shù)聲明(后面的函數(shù)調(diào)用了它) void linageFull(FILE * fp2,int * linage,int * colum
6、ns,int * page);/函數(shù)1:void printOut()/輸出頭文件中的所以整形變量/這個函數(shù)中的參數(shù)全部來自頭文件printf("n");printf("格式化文本文件結(jié)束n");printf("版面的參數(shù)如下:n");printf("頁長:%dn",PageLength);printf("頁寬:%dn",PageWedth);printf("左空白:%dn",LeftMargin);printf("頭長:%dn",HeadingLengt
7、h);printf("腳長:%dn",FootingLength);printf("起始頁號:%dn",StaringPageNumber);printf("n");printf("特別說明:本程序只支持英文格式化,對于中文格式化存在亂碼問題。n");printf("n");/函數(shù)2:void writeOut(FILE * fp2,char c1)/輸出到文本文件2和屏幕char ch1;ch1 = fputc(c1,fp2);/接收從文本文件1中讀出的一個字符,并且保存到文本文件2中prin
8、tf("%c",ch1);/把這個字符輸出到外設(shè)(屏幕)/函數(shù)3:int zuokongbai(FILE * fp2)/左空白for(i=0; i<10; i+)writeOut(fp2,' ');/循環(huán)10次,輸出10個空格到文本文件2中return i;/返回值為10.它賦給記錄單行字節(jié)數(shù)的變量columns/函數(shù)4:void pageNumber(FILE * fp2,char * aIndex,int * page)/輸出當(dāng)前頁碼int m,n;/定義2個整形變量接收page和page%10的值m = *page;/接收page的值int i=
9、0;while(m != 0)/判斷條件為:m的值不為0即page的值不為0n = m % 10;*(aIndex+i) = n+'0'/對數(shù)組a進(jìn)行賦值操作,把int類型的page的各位數(shù)轉(zhuǎn)換為字符型保存到數(shù)組a中,以便于向文本文件2中輸出pagei+;m = m /10;/此時page 已經(jīng)保存在數(shù)組a中了,開始輸出pagefor(i=i-1; i>=0; i-)writeOut(fp2,*(aIndex+i);/向文本文件2中輸出page(*page)+;/指向下一頁/函數(shù)5:void out(int * columns,char * array,int * lin
10、age,FILE * fp2,int * page,int * size)/輸出if(*(columns)+1+strlen(array) > 60)/判斷這一行是否還能夠輸出空格加一個單詞/這一行不能再輸出了,開始換行if(*(linage)>50)/判斷這一頁是否已經(jīng)印滿linageFull(fp2,linage,columns,page);/轉(zhuǎn)到下一頁for(i=0; i<*(size); i+)writeOut(fp2,*(array+i);/把保存在數(shù)組中的一個字輸出到文本文件2中(*(columns)+;/輸出一個字符,這一行的字符數(shù)就增加一個(*(size) =
11、 0;/輸出之后就開始重新向數(shù)組array中讀入字符,所以size要?dú)w0(*(array) ='0'/如果是多個空格連在一起,那么就需要把a(bǔ)rray數(shù)組第一個設(shè)為結(jié)束字符。else/這一頁還沒印滿,換行后開始輸出writeOut(fp2,'n');/換行(*(linage)+;/*(columns)=0;(*(columns) = zuokongbai(fp2);/左空白10for(i=0; i<(*(size); i+)writeOut(fp2,(*(array+i);/通過循環(huán)向文本文件2中輸入字(*(columns)+;(*(size) = 0;(*
12、(array) ='0'else/這一行還沒有滿,還可以再輸出writeOut(fp2,' ');(*(columns)+;for(i=0;i<*size; i+)writeOut(fp2,*(array+i);(*(columns)+;(*(size) = 0;(*(array) ='0'/函數(shù)6:void linageFull(FILE * fp2,int * linage,int * columns,int * page)/開始下一頁的打印/完成頁的尾部格式(空一行后居中輸出頁碼page再空3行)writeOut(fp2,'n
13、');/空一行for(i=0; i<29; i+)/居中輸出頁碼writeOut(fp2,' ');pageNumber(fp2,aIndex,page);for(i=0; i<3; i+)writeOut(fp2,'n');/再空3行*linage=0;/開始打印第二頁。實(shí)現(xiàn)輸出頁首的格式(頭長+左空白)for(i=0; i<5; i+)/頭長5writeOut(fp2,'n');*linage+;/已經(jīng)占有l(wèi)inage行*columns = zuokongbai(fp2);/左空白10/函數(shù)7:void readIn
14、(FILE * fp1,FILE * fp2)/讀入文本文件int blankNumber=0;/記錄空格的數(shù)量int linage = 0;/記錄行數(shù)int columns = 0;/記錄單行的字節(jié)數(shù)char array61 = "0"/存一個單詞char * arrayIndex = array;int size = 0; /初始化單詞的長度for(i=0; i<5; i+)/頭長5writeOut(fp2,'n');linage+;/已經(jīng)占有l(wèi)inage行columns = zuokongbai(fp2);/左空白10for(i=0; i<
15、7; i+)/段首縮進(jìn)8字節(jié)writeOut(fp2,' ');columns+;/以上代碼實(shí)現(xiàn)了基本的版面參數(shù)要求,下面開始具體到字母的排版char c1;c1 = fgetc(fp1);/讀入第一個字符while(c1!=EOF)/如果讀到結(jié)尾了,退出這個函數(shù)。否則開始字符的輸入輸出操作if(c1=' ')/如果字符為空格if(strlen(array)=0)/判斷空格前是否有一個字;/沒有字不打印else/有一個字/調(diào)用這個函數(shù)把這個字輸出到文本文件2和屏幕中out(&columns,array,&linage,fp2,&page,
16、&size);else if(c1='')/如果字符為就要另起一段/先輸出if(strlen(array)=0) /判斷前是否有一個字;/沒有字不打印else/有字要打印/調(diào)用這個函數(shù)把這個字輸出到文本文件2和屏幕中out(&columns,array,&linage,fp2,&page,&size);/輸出字后開始另起下一段if(linage>50)/判斷這一頁是否已經(jīng)印滿/印滿了要換頁輸出linageFull(fp2,&linage,&columns,&page);for(i=0; i<7; i+)
17、/段首縮進(jìn)8字節(jié)writeOut(fp2,' ');columns+;else/這一頁沒有印滿writeOut(fp2,'n');/換行l(wèi)inage+;columns=0;columns = zuokongbai(fp2);/左空白10for(i=0; i<7; i+)/段首縮進(jìn)8字節(jié)writeOut(fp2,' ');columns+;else/此時c1是一個要輸出的字符arraysize = c1;/保存到數(shù)組中size+;arraysize='0'c1 = fgetc(fp1);/上一個字符處理完了,開始從文本文件1中
18、讀出下一個字符if(c1 = EOF)/首先判斷是不是結(jié)束了/文本文件已經(jīng)讀完。把前面已經(jīng)讀出保存在數(shù)組中的字輸出到文本文件2中out(&columns,array,&linage,fp2,&page,&size);break;/結(jié)束while循環(huán)if(strlen(array) >61)/程序中設(shè)計一個字不能超過60個字符,這里判斷條件為61是加了一個結(jié)束符0.printf("字符格式錯誤!哪有這么長的單詞!n");break; /結(jié)束while循環(huán)/函數(shù)8:/程序的入口void main()FILE * fp1,* fp2;/fp1
19、指向讀入的文本文件,fp2指向輸出的文本文件char fileName_one100;/保存要格式化文本文件的文件名char fileName_two100;/保存格式化之后輸出文本文件的文件名printf("請輸入要格式化文件的文件名(包括后綴名):n");gets(fileName_one);if(fp1=fopen(fileName_one,"r")=NULL)printf("The file "%s" was not fopen!n",fileName_one);exit(0);/得到要進(jìn)行格式化的文本文件
20、1的地址printf("請輸入輸出文件的文件名(包括后綴名):n");gets(fileName_two);if(fp2=fopen(fileName_two,"a")=NULL)printf("The file "%s" was not fopen!n",fileName_two);exit(0);/得到格式化后要保存到文本文件2的地址readIn(fp1,fp2);/讀入文本文件開始格式化printOut();/參數(shù)說明fclose(fp1);/關(guān)閉文件(把文件緩沖區(qū)的數(shù)據(jù)送入硬盤中)fclose(fp2);/
21、關(guān)閉文件(把文件緩沖區(qū)的數(shù)據(jù)送入硬盤中)3,調(diào)試過程:l (1):開始我設(shè)計頁碼是整形,當(dāng)格式化文本文件過大時,頁碼輸出就出現(xiàn)了問題。實(shí)現(xiàn)輸出頁碼是用fputc這個函數(shù),它是實(shí)現(xiàn)字符的輸出,就把整形的頁碼數(shù)轉(zhuǎn)換為ASCII碼形式輸出了。改為:把整形的頁碼轉(zhuǎn)換為字符型用一個字符數(shù)組來保存。每次輸出頁碼是就是輸出這個數(shù)組中的數(shù)據(jù)。這樣就實(shí)現(xiàn)了頁碼的完整輸出。l (2)讀一個字符判斷是否為:空,。(占不考慮其他條件)不是就直接輸出。導(dǎo)致不能實(shí)現(xiàn)任何完整的字都沒有被分割在兩行這個功能。改為:讀一個字符判斷是否為:空字符,。(占不考慮其他條件)不是就保存在數(shù)組中,這個數(shù)組就是保存一個字的作用。判斷輸出就
22、是一個一個字的輸出,這樣就實(shí)現(xiàn)了任何完整的字都沒有被分割在兩行這個功能。4,運(yùn)行結(jié)果:本人運(yùn)行程序的到的結(jié)果:(測試數(shù)據(jù)1.txt) The use of silence in communication is different from culture to culture. Silence can communicate agreement, confusion, respect, sadness, or any number of meanings. In eastern cultures, silence has long been regarded as a virtue. Whi
23、le in western cultures, silence has generally been considered socially disagreeable. To most people in the United States, silence The use of silence The use of silence in communication is different from culture to culture. Silence can communicate agreement, confusion, respect, sadness, or any number
24、 of meanings. In eastern cultures, silence has long been regarded as a virtue. While in western cultures, silence has generally been considered socially disagreeable. To most people in the United States, silence The use of silence The use of silence in communication is different from culture to cult
25、ure. Silence can communicate agreement, confusion, respect, sadness, or any number of meanings. In eastern cultures, silence has long been regarded as a virtue. While in western cultures, silence has generally been considered socially disagreeable. To most people in the United States, silence The us
26、e of silence The use of silence in communication is different from culture to culture. Silence can communicate agreement, confusion, respect, sadness, or any number of meanings. In eastern cultures, silence has long been regarded as a virtue. While in western cultures, silence has generally been con
27、sidered socially disagreeable. To most people in the United States, silence The use of silence The use of silence in communication is different from culture to culture. Silence can communicate agreement, confusion, respect, sadness, or any number of meanings. In eastern cultures, silence has long be
28、en regarded as a virtue. While in western cultures, silence has generally been considered socially disagreeable. To most people in the United States, silence The use of silence The use of silence in communication is different from culture to culture. Silence can communicate agreement, confusion, respect, sadness, or any number of meanings. In eastern cultures, silence has long been regarded as a virtue. While in western cultures, silence has generally been considered socially disagreeable. 1 To most people in the United States, silence
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭裝飾裝修工程施工合同
- 停車場承包服務(wù)合同
- 合同抵押貸款裝修合同
- 財務(wù)檔案管理制度文檔
- 2024-2025學(xué)年第二學(xué)期天域全國名校協(xié)作體高三3月聯(lián)考 歷史試卷(含答案)
- 2025年上半年宣恩貢水融資擔(dān)保限公司公開招聘工作人員【2人】易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年宣城市績溪縣事業(yè)單位招考(53人)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽阜陽市12345政務(wù)服務(wù)便民熱線招聘35人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽蕪湖市人社局所屬事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2024福建福州文體產(chǎn)業(yè)開發(fā)運(yùn)營有限公司社會招聘2人筆試參考題庫附帶答案詳解
- 兒童健康產(chǎn)業(yè)行業(yè)研究報告
- 任務(wù)型閱讀-小升初英語專項(xiàng)練習(xí)(譯林版三起)
- 部編版語文二年級下冊第三單元教材解讀大單元集體備課
- 七年級地理上冊期末試卷(可打印)
- ISO28000:2022供應(yīng)鏈安全管理體系
- 重癥監(jiān)測治療與復(fù)蘇
- 袁家村規(guī)劃方案
- 電力計量人員培訓(xùn)課件
- 富氫水完整課件
- 國家臨床版3.0手術(shù)操作編碼(ICD-9-CM3)
- A320飛機(jī)空調(diào)系統(tǒng)非正常操作A要點(diǎn)分析
評論
0/150
提交評論