C語(yǔ)言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第13章 構(gòu)建大規(guī)模程序_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第13章 構(gòu)建大規(guī)模程序_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第13章 構(gòu)建大規(guī)模程序_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第13章 構(gòu)建大規(guī)模程序_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第13章 構(gòu)建大規(guī)模程序_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十三章大程序構(gòu)建目錄/Contents

實(shí)例講解0201多文件構(gòu)成的優(yōu)點(diǎn)以及注意事項(xiàng)多文件構(gòu)成的優(yōu)點(diǎn)以及注意事項(xiàng)01C程序構(gòu)成常見(jiàn)的C程序由多個(gè)文件組成(包括源文件和頭文件)。源文件(后綴為.c或者.cpp):函數(shù)的定義和外部變量頭文件(后綴為.h):

可以在源文件直接共享的信息多文件編寫(xiě)的優(yōu)點(diǎn)把相關(guān)的函數(shù)和變量分組放在同一個(gè)文件中可以使程序的結(jié)構(gòu)清晰可以分別對(duì)每一個(gè)源文件進(jìn)行編譯,單獨(dú)修改,單獨(dú)編譯;把函數(shù)歸類分組放在不同的源文件中更利于復(fù)用多文件編寫(xiě)引發(fā)的問(wèn)題某個(gè)文件中的函數(shù)如何調(diào)用定義在其他文件中的函數(shù)呢?函數(shù)如何訪問(wèn)其他文件的外部變量??jī)蓚€(gè)文件如何共享一個(gè)宏定義或類型定義?解決方法:使用文件包含指令(#include指令)#include指令的使用#include<文件名>

引用C語(yǔ)言自身庫(kù)的頭文件搜尋:系統(tǒng)頭文件所在的目錄#include“文件名”

引用所有的頭文件,包含自己編寫(xiě)的頭文件搜尋:先搜尋當(dāng)前目錄,然后搜尋系統(tǒng)頭文件所在的目錄==>如果使用的是C語(yǔ)言自身庫(kù)的頭文件,最好使用<>也可指定目錄:#include“c:\**\*.h”必須注意:當(dāng)同一個(gè)頭文件被同一個(gè)工程下不同文件重復(fù)包含時(shí)該如何處理?若程序中有2個(gè)文件#includeboolean.h==>相應(yīng)的內(nèi)容(如下圖中的三個(gè)符號(hào)常量)重復(fù)定義,進(jìn)而無(wú)法通過(guò)編譯解決辦法:使用條件編譯指令,用#ifndef-#endif來(lái)封閉文件的內(nèi)容#ifndefBOOLEAN_H#defineBOOLEAN_H#defineTRUE1#defineFALSE0typedefintBool;#endif這里的BOOLEAN_H可以用任意合法標(biāo)識(shí)符替換,但習(xí)慣上與頭文件的名稱相對(duì)應(yīng),一來(lái)便于閱讀,二來(lái)不會(huì)出現(xiàn)重復(fù)使用同樣的標(biāo)識(shí)符實(shí)例講解02完整案例分析---格式化文本程序源文件頭文件word.cline.cjustify.c讀單詞的相關(guān)函數(shù)的具體實(shí)現(xiàn)行緩沖相關(guān)的函數(shù)的具體實(shí)現(xiàn)主調(diào)函數(shù)word.hline.hword.c中的函數(shù)的原型聲明line.c中的函數(shù)的原型聲明word.h#ifndefWORD_H#defineWORD_H

/***********************************************************read_word:Readsthenextwordfromtheinputand**storesitinword.Makeswordemptyifno**wordcouldbereadbecauseofend-of-file.**Truncatesthewordifitslengthexceeds**len.***********************************************************/voidread_word(char*word,intlen);

#endifline.h#ifndefLINE_H#defineLINE_H

/*clear_line:Clearsthecurrentline.*/voidclear_line(void);

/*add_word:Addswordtotheendofthecurrentline.Ifthisisnotthefirstwordontheline,putsonespacebeforeword.*/voidadd_word(constchar*word);/*space_remaining:Returnsthenumberofcharactersleftinthecurrentline.*/intspace_remaining(void);

/*write_line:Writesthecurrentlinewithjustification.*/voidwrite_line(void);

/*flush_line:Writesthecurrentlinewithoutjustification.Ifthelineisempty,doesnothing.*/voidflush_line(void);

#endifjustify.c/*Formatsafileoftext*/#include<string.h>#include"line.h"#include"word.h"#defineMAX_WORD_LEN20intmain(void){charword[MAX_WORD_LEN+2];intword_len;

clear_line();for(;;){

read_word(word,MAX_WORD_LEN+1);word_len=strlen(word);if(word_len==0){flush_line();return0;}if(word_len>MAX_WORD_LEN)word[MAX_WORD_LEN]='*';if(word_len+1>space_remaining()){write_line();clear_line();}

add_word(word);}}word.c#include<stdio.h>#include"word.h"intread_char(void){intch=getchar();

if(ch=='\n'||ch=='\t')return'';returnch;}voidread_word(char*word,intlen){intch,pos=0;

while((ch=read_char())=='');while(ch!=''&&ch!=EOF){if(pos<len)word[pos++]=ch;ch=read_char();}word[pos]='\0';}line.c#include<stdio.h>#include<string.h>#include"line.h"#defineMAX_LINE_LEN60charline[MAX_LINE_LEN+1];intline_len=0;intnum_words=0;

voidclear_line(void){line[0]='\0';line_len=0;num_words=0;}voidflush_line(void){if(line_len>0)puts(line);}intspace_remaining(void){returnMAX_LINE_LEN-line_len;}voidadd_word(constchar*word){if(num_words>0){line[line_len]='';line[line_len+1]='\0';line_len++;}strcat(line,word);line_len+=strlen(word);num_words++;}

voidwrite_line(void){intextra_spaces,spaces_to_insert,i,j;

extra_spaces=MAX_LINE_LEN-line_len;for(i=0;i<line_len;i++){if(line[i]!='')putchar(line[i]);else{spaces_to_insert=extra_spaces/(num_words-1);for(j=1;j<=spaces_to_insert+1;j++)putchar('');extra_spaces

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論