![(精選)課程設計(文本格式化)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/1/0ec58ba3-e039-4ce3-994e-b9318561616b/0ec58ba3-e039-4ce3-994e-b9318561616b1.gif)
![(精選)課程設計(文本格式化)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/1/0ec58ba3-e039-4ce3-994e-b9318561616b/0ec58ba3-e039-4ce3-994e-b9318561616b2.gif)
![(精選)課程設計(文本格式化)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/1/0ec58ba3-e039-4ce3-994e-b9318561616b/0ec58ba3-e039-4ce3-994e-b9318561616b3.gif)
![(精選)課程設計(文本格式化)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/1/0ec58ba3-e039-4ce3-994e-b9318561616b/0ec58ba3-e039-4ce3-994e-b9318561616b4.gif)
![(精選)課程設計(文本格式化)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/1/0ec58ba3-e039-4ce3-994e-b9318561616b/0ec58ba3-e039-4ce3-994e-b9318561616b5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、附件1:學 號: 0121110340427課 程 設 計題 目文本格式化學 院計算機科學與技術學院專 業(yè)計算機科學與技術班 級計算機1104班姓 名成霖指導教師吳利軍2013年6月17日題目:文本格式化一,問題描述:試寫一個文本格式化程序可以處理一個輸入文件,它按照用戶指定的下列版面規(guī)格參數(shù)重排版面:實現(xiàn)頁內(nèi)調整、分段、分頁等文本處理功能,排版結果存入輸出文本文件中。(1)輸出文件中字與字之間只留一個空格符,即實現(xiàn)多余空格符的壓縮。(2)輸出文件中,任何完整的字不能分割在兩行,行尾可以不齊,但行首要對齊。 (3)將頁號印在頁底空行中第2行的中間位置上。(4)版面要求的參數(shù)見題集p117。(5
2、)測試用例自己設計。二,設計: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,概要設計:Ø 1:void printOut()該函數(shù)的功能是:格式化文本文件后必要提示用戶的信息說明Ø 2:void writeOut(FILE * fp
3、2,char c1)該函數(shù)的功能是:將字符輸出到文本文件和屏幕Ø 3:int zuokongbai(FILE * fp2)該函數(shù)的功能是:實現(xiàn)文本參數(shù)格式(左空白)Ø 4:void pageNumber(FILE * fp2,char * aIndex,int * page)該函數(shù)的功能是:輸出當前頁碼 Ø 5:void out(int * columns,char * array,int * linage,FILE * fp2,int * page,int * size)該函數(shù)的功能是:判斷是否輸出到文本文件和屏幕Ø 6:void linageFull
4、(FILE * fp2,int * linage,int * columns,int * page)該函數(shù)的功能是:輸出頁首的格式(頭長+左空白)Ø 7:void readIn(FILE * fp1,FILE * fp2)該函數(shù)是整個程序的核心,執(zhí)行程序的主要邏輯判斷Ø 8:void main()3,實驗設計程序代碼:#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ù)調用了它) void linageFull(FILE * fp2,int * linage,int * columns
6、,int * page);/函數(shù)1:void printOut()/輸出頭文件中的所以整形變量/這個函數(shù)中的參數(shù)全部來自頭文件printf("n");printf("格式化文本文件結束n");printf("版面的參數(shù)如下:n");printf("頁長:%dn",PageLength);printf("頁寬:%dn",PageWedth);printf("左空白:%dn",LeftMargin);printf("頭長:%dn",HeadingLength)
7、;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中printf
8、("%c",ch1);/把這個字符輸出到外設(屏幕)/函數(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)/輸出當前頁碼int m,n;/定義2個整形變量接收page和page%10的值m = *page;/接收page的值int i=0;
9、while(m != 0)/判斷條件為:m的值不為0即page的值不為0n = m % 10;*(aIndex+i) = n+'0'/對數(shù)組a進行賦值操作,把int類型的page的各位數(shù)轉換為字符型保存到數(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 * linag
10、e,FILE * fp2,int * page,int * size)/輸出if(*(columns)+1+strlen(array) > 60)/判斷這一行是否還能夠輸出空格加一個單詞/這一行不能再輸出了,開始換行if(*(linage)>50)/判斷這一頁是否已經(jīng)印滿linageFull(fp2,linage,columns,page);/轉到下一頁for(i=0; i<*(size); i+)writeOut(fp2,*(array+i);/把保存在數(shù)組中的一個字輸出到文本文件2中(*(columns)+;/輸出一個字符,這一行的字符數(shù)就增加一個(*(size) = 0
11、;/輸出之后就開始重新向數(shù)組array中讀入字符,所以size要歸0(*(array) ='0'/如果是多個空格連在一起,那么就需要把array數(shù)組第一個設為結束字符。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;(*(a
12、rray) ='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、39;);/空一行for(i=0; i<29; i+)/居中輸出頁碼writeOut(fp2,' ');pageNumber(fp2,aIndex,page);for(i=0; i<3; i+)writeOut(fp2,'n');/再空3行*linage=0;/開始打印第二頁。實現(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(F
14、ILE * 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<7;
15、 i+)/段首縮進8字節(jié)writeOut(fp2,' ');columns+;/以上代碼實現(xiàn)了基本的版面參數(shù)要求,下面開始具體到字母的排版char c1;c1 = fgetc(fp1);/讀入第一個字符while(c1!=EOF)/如果讀到結尾了,退出這個函數(shù)。否則開始字符的輸入輸出操作if(c1=' ')/如果字符為空格if(strlen(array)=0)/判斷空格前是否有一個字;/沒有字不打印else/有一個字/調用這個函數(shù)把這個字輸出到文本文件2和屏幕中out(&columns,array,&linage,fp2,&page,&a
16、mp;size);else if(c1='')/如果字符為就要另起一段/先輸出if(strlen(array)=0) /判斷前是否有一個字;/沒有字不打印else/有字要打印/調用這個函數(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、首縮進8字節(jié)writeOut(fp2,' ');columns+;else/這一頁沒有印滿writeOut(fp2,'n');/換行l(wèi)inage+;columns=0;columns = zuokongbai(fp2);/左空白10for(i=0; i<7; i+)/段首縮進8字節(jié)writeOut(fp2,' ');columns+;else/此時c1是一個要輸出的字符arraysize = c1;/保存到數(shù)組中size+;arraysize='0'c1 = fgetc(fp1);/上一個字符處理完了,開始從文本文件1中讀出
18、下一個字符if(c1 = EOF)/首先判斷是不是結束了/文本文件已經(jīng)讀完。把前面已經(jīng)讀出保存在數(shù)組中的字輸出到文本文件2中out(&columns,array,&linage,fp2,&page,&size);break;/結束while循環(huán)if(strlen(array) >61)/程序中設計一個字不能超過60個字符,這里判斷條件為61是加了一個結束符0.printf("字符格式錯誤!哪有這么長的單詞!n");break; /結束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);/得到要進行格式化的文本文件1的
20、地址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);/關閉文件(把文件緩沖區(qū)的數(shù)據(jù)送入硬盤中)fclose(fp2);/關閉
21、文件(把文件緩沖區(qū)的數(shù)據(jù)送入硬盤中)3,調試過程:l (1):開始我設計頁碼是整形,當格式化文本文件過大時,頁碼輸出就出現(xiàn)了問題。實現(xiàn)輸出頁碼是用fputc這個函數(shù),它是實現(xiàn)字符的輸出,就把整形的頁碼數(shù)轉換為ASCII碼形式輸出了。改為:把整形的頁碼轉換為字符型用一個字符數(shù)組來保存。每次輸出頁碼是就是輸出這個數(shù)組中的數(shù)據(jù)。這樣就實現(xiàn)了頁碼的完整輸出。l (2)讀一個字符判斷是否為:空,。(占不考慮其他條件)不是就直接輸出。導致不能實現(xiàn)任何完整的字都沒有被分割在兩行這個功能。改為:讀一個字符判斷是否為:空字符,。(占不考慮其他條件)不是就保存在數(shù)組中,這個數(shù)組就是保存一個字的作用。判斷輸出就是一
22、個一個字的輸出,這樣就實現(xiàn)了任何完整的字都沒有被分割在兩行這個功能。4,運行結果:本人運行程序的到的結果:(測試數(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. While
23、 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 o
24、f 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 cultur
25、e. 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 use
26、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 consi
27、dered 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
28、 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 The use of sile
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (湘教版)七年級數(shù)學下冊:2.1.2《冪的乘方與積的乘方》聽評課記錄
- 人教版歷史七年級下冊第18課《統(tǒng)一多民族國家的鞏固和發(fā)展》聽課評課記錄
- 小學6年級聽評課記錄
- 蘇科版數(shù)學八年級上冊聽評課記錄《6-2一次函數(shù)(1)》
- 五年級小數(shù)口算練習題
- 華師大版數(shù)學八年級下冊《菱形的性質》聽評課記錄2
- 蘇教版一年級口算練習題
- 蘇教版三年級數(shù)學上冊口算練習
- 蘇教版二年級上冊口算練習共7天
- 電動車管理及安全協(xié)議書范本
- 走好群眾路線-做好群眾工作(黃相懷)課件
- NY∕T 4001-2021 高效氯氟氰菊酯微囊懸浮劑
- 《社會主義市場經(jīng)濟理論(第三版)》第七章社會主義市場經(jīng)濟規(guī)則論
- 《腰椎間盤突出》課件
- 漢聲數(shù)學圖畫電子版4冊含媽媽手冊文本不加密可版本-29.統(tǒng)計2500g早教
- simotion輪切解決方案與應用手冊
- 柴油發(fā)電機運行檢查記錄表格
- 典范英語-2備課材料2a課件
- DSC曲線反映PET得結晶度
- 科學素養(yǎng)全稿ppt課件(完整版)
- 建筑智能化培訓課件
評論
0/150
提交評論