freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言程序設(shè)計(下)ppt(1)-資料下載頁

2025-10-07 16:01本頁面
  

【正文】 = fopen(D:\\file2,a+)。 是以文本讀寫方式打開 D盤根目錄下的 file2文件,允許讀,也允許在文件尾追加數(shù)據(jù)。 對于文件的打開方式,需要注意以下幾點: ① 表示按文本文件打開的“ t”可以省略不寫。 例如 : FILE *fp1,*fp2。 fp1 = fopen(C:\\mine\\file1,rt)。 fp2 = fopen(C:\\mine\\file2,r)。 這里的第二句 fopen()函數(shù)中的參數(shù)“ rt”和第三句fopen()函數(shù)中的參數(shù)“ r”的含義完全相同,都是指以文本只讀方式打開一個文件。 ② 在用“ r”方式打開一個文件時,該文件必須存在,若文件不存在則打開失敗; 例如 : FILE *fp。 fp = fopen(C:\\mine\\file3,rb)。 如果 C盤的 mine目錄下沒有名字為 file3的文件,則打開文件失敗,這時 fopen()函數(shù)將返回一空指針,詳見下面說明 (3)。 ③ 在用“ w”方式打開一個文件時,若打開的文件不存在,則以第一個參數(shù)指定的路徑和文件名建立一個新文件,若打開的文件已經(jīng)存在,則清除原文件內(nèi)容。 例如 : FILE *fp。 fp = fopen(D:\\mine\\file2,wt)。 如果 D盤的 mine目錄下沒有名字為 file3的文件,則fopen()函數(shù)在該目錄下建立一個名為 file3的文件,并返回新建文件的文件指針。如果 file3文件存在,則將該文件內(nèi)容全部清除。 ④ 在用“ a”式打開一個文件時,只能以追加的方式在文件尾寫入數(shù)據(jù),若打開的文件不存在,則建立一個新文件。 例如 : FILE *fp。 fp = fopen(C:\\mine\\file1,at)。 如果 C盤 mine目錄下有名字為 file1的文件,則打開該文件。當(dāng)向該文件寫數(shù)據(jù)時,則直接寫到文件尾。如果文件不存在,則建立一個新文件。 167。 (3) 如果打開文件失敗, 例如,文件不存在、磁盤已滿、文件名非法、存取權(quán)限不夠等, fopen()函數(shù)將會返回一個空指針 NULL。 通常,可以利用這一返回值來判斷是否成功打開了文件。 167。 例如 : char *name=D:\\。 fp=fopen(name,rb)。 if(fp==NULL){ printf(Error opening file %s!\n,name)。 exit(1)。 } 167。 (4) 為了記錄文件的讀寫位置, 每個文件都對應(yīng)有一個位置指針,它指向文件當(dāng)前讀寫字節(jié)的位置 。 ?如果文件以追加方式(含有“ a”)打開,該指針指向文件尾,即文件最后一個字節(jié)的后面,以后的讀寫操作都從該位置開始向后進行。 ?如果以其他方式打開,例如只寫,只讀,讀寫等,位置指針總是指向文件首,即文件的第一個字節(jié),則今后的讀寫操作都從該位置開始向后進行。 ?應(yīng)特別注意的是,這里所說的位置指針和文件指針是不同的兩個指針,它們的區(qū)別在于位置指針指向文件當(dāng)前讀寫的位置,而文件指針指向文件的 FILE結(jié)構(gòu)。在 取中還會進一步介紹位置指針。 3. 關(guān)閉文件 167。 當(dāng)文件使用完以后,應(yīng)當(dāng)養(yǎng)成及時關(guān)閉文件的習(xí)慣。關(guān)閉文件用 fclose()函數(shù),該函數(shù)的一般調(diào)用形式為: fclose (fp); 167。 注 : ?fp為指向某個已打開文件的文件指針。 ?如果文件被成功關(guān)閉, fclose()函數(shù)返回 0值,否則返回非 0值。磁盤已滿、 I/O錯誤等原因都會導(dǎo)致文件關(guān)閉失敗。 167。 fclose()函數(shù)的作用: ?消除文件指針 fp和其指向文件的之間的關(guān)聯(lián),使 fp不再指向該文件,以后不能再通過 fp指針對原來它指向的文件進行操作,這樣可以避免對文件的誤操作 ; ?避免數(shù)據(jù)丟失。在緩沖文件系統(tǒng)中,當(dāng)向文件寫數(shù)據(jù)時,數(shù)據(jù)實際上先被寫入了緩沖區(qū),等到緩沖區(qū)被填滿后才將數(shù)據(jù)真正寫到外存中。如果緩沖區(qū)還未被填滿時程序就結(jié)束了,那么后果就是緩沖區(qū)中的數(shù)據(jù)未被真正寫入到文件中,造成數(shù)據(jù)丟失。使用 flose()函數(shù)關(guān)閉文件,可以避免這個問題。該函數(shù)在釋放文件指針之前,會先將緩沖區(qū)中的數(shù)據(jù)輸出到文件中保存起來。 167。 和 fopen()函數(shù)類似,在程序中也可以通過檢查 fclose()函數(shù)的返回值來判斷是否成功關(guān)閉了文件 例如 : if(fclose(fp)!=0){ printf(Error closing file!\n)。 } 這里檢查了 fclose()函數(shù)的返回值是否為 0,如果不為 0則表示關(guān)閉文件失敗,在屏幕上輸出出錯信息。 3. 關(guān)閉文件 167。 當(dāng)文件使用完以后,應(yīng)當(dāng)養(yǎng)成及時關(guān)閉文件的習(xí)慣。關(guān)閉文件用 fclose()函數(shù),該函數(shù)的一般調(diào)用形式為: fclose (fp); 167。 注 : ?fp為指向某個已打開文件的文件指針。 ?如果文件被成功關(guān)閉, fclose()函數(shù)返回 0值,否則返回非 0值。磁盤已滿、 I/O錯誤等原因都會導(dǎo)致文件關(guān)閉失敗。 文件的讀寫操作 當(dāng)按指定方式成功打開一個文件后,就可以對它進行讀寫操作了。文件的讀寫操作是通過 C編譯系統(tǒng)提供的相關(guān)庫函數(shù)進行的。 fgetc()、 getc()和 fputc()、 putc() (1) fgetc()和 getc() fgetc()和 getc()是一對完全等價的函數(shù),它們都用來從指定的文件中讀取一個字符,調(diào)用格式為: ch=fgetc(fp) ch=getc(fp) 注 : ?參數(shù) fp是指向一個已打開文件的文件指針 ?ch通常是一個 char型的變量。 ?該調(diào)用形式實現(xiàn)從 fp指向的文件中讀取一個字符給變量 ch。 ?在使用 fgetc()函數(shù)時,要注意讀取文件的打開方式必須含有“ r”或“ +”,即以讀或讀寫方式打開。 ?調(diào)用 fgetc()函數(shù)讀一個字符后,文件的位置指針將自動加 1,指向下一個需要讀的字符。如果 fgetc()讀到文件結(jié)尾或在讀的過程中發(fā)生錯誤,則返回 EOF( EOF是 的一個常量,其值通常是 1)。 ?可用 fgetc()的返回值和 EOF相比較來判斷是否已經(jīng)讀到了文件尾。通過多次調(diào)用 fgetc()函數(shù),可以從文件中讀取多個字符。 【 例 】 從文件逐個讀取字符,然后在屏幕上輸出。 include include void main() { FILE *fp。 char name[ ]= D:\\。 char ch。 if((fp=fopen(name,r))==NULL){ printf(Error opening file %s!\n,name)。 exit(1)。 } ch=fgetc(fp)。 while(ch!=EOF){ putchar(ch)。 ch=fgetc(fp)。 } fclose(fp)。 } (2) fputc()和 putc() fputc()和 putc()也是兩個完全等價的函數(shù),它們都用來向指定的文件寫入一個字符,調(diào)用格式為: fput(ch,fp)。 putc(ch,fp)。 注 : ?ch為欲寫入的字符,可以是字符型的常數(shù)或變量; ?fp為文件指針。 ?該函數(shù)的功能是將單個字符 ch寫入指定的文件,如果寫入成功,返回所寫入的字符;否則,返回 EOF。 【 例 】 用 fgetc()和 fputc()函數(shù)實現(xiàn)簡單的文本文件復(fù)制程序 filecopy。 include include void main(int argc,char *argv[]) { FILE *ffrom,*fto。 char ch。 if(argc!=3){ printf(usage: filecopy srcfile dstfile\n)。 exit(1)。 } if((ffrom=fopen(argv[1],rt))==NULL){ printf(Error opening file %s!\n, argv[1])。 exit(1)。 } if((fto=fopen(argv[2],wt))==NULL){ printf(Error opening file %s!\n, argv[2])。 exit(1)。 } while((ch=fgetc(ffrom))!=EOF) fputc(ch, fto)。 fclose(ffrom)。 fclose(fto)。 } 167。 將該程序命名為 filecopy并編譯鏈接為可執(zhí)行文件,在 DOS命令行中調(diào)用,其調(diào)用方法為: filecopy 源文件 目標(biāo)文件 167。 這里的 源文件 和 目標(biāo)文件 是 filecopy程序的兩個參數(shù)。用一對尖括號將它們括起來,表示在調(diào)用 filecopy程序時,這兩個參數(shù)都不能省略。 2. 字符串讀寫函數(shù) fgets()和 fputs() (1) fgets()函數(shù) 該函數(shù)可以從文件中讀取一個字符串,并將該字符串存放到字符數(shù)組中。該函數(shù)的一般調(diào)用形式為: fgets(array, num, fp)。 167。 注 : ?這里的 array是一個字符數(shù)組 ?num是一個正整數(shù),一般用于指明字符數(shù)組 array的大小 ?fp是文件指針。 【 例 】 從文件逐個讀取字符,然后在屏幕上輸出。 include include void main() { FILE *fp。 char name[ ]= D:\\。 char ch。 if((fp=fopen(name,r))==NULL){ printf(Error opening file %s!\n,name)。 exit(1)。 } ch=fgetc(fp)。 while(ch!=EOF){ putchar(ch)。 ch=fgetc(fp)。 } fclose(fp)。 } 注 : 167。 當(dāng) fgets()函數(shù)遇到以下幾種情況時,就會停止讀入字符: ?已讀入了 num1個字符 ?讀到了換行符 ?已經(jīng)讀到了文件尾 167。 之所以讀進 num1個字符就停止讀入,是因為 fgets()會在讀入字符串的后面添加一個‘ \0?字符,表示字符串的結(jié)束。 167。 當(dāng) fgets()讀到換行符時,會在字符數(shù)組中保留讀出的換行符,并在換行符后再添加一個‘ \0?。 【 例 】 實現(xiàn)一個程序 readstr,該程序從文件中讀入含有 10個字符的字符串。 include include void main(int argc,char *argv[]) { FILE *fp。 char str[11]。 if(argc!=2){ printf(usage: readstr filename\n)。 exit(1)。 } if((fp=fopen(argv[1],r))==NULL){ printf(Error opening file %s!\n, argv[1])。 exit(1)。 } fgets(str,11,fp)。 printf(Read string is %s\n,str)。 fclose(fp)。 } 下面是一個調(diào)用示例: readstr 這里, readstr從自身的 c源程序 10字符,該行的執(zhí)行結(jié)果為: Read string is includes 如果在 5個字符(中間包含一個空格)的空注釋: /* */ 再次調(diào)用 readstr讀該文件,執(zhí)行結(jié)果為: Read string is /* */ 這里只讀出了 5個字符,原因是 fgets()在讀的時候遇到了換行符號,于是就停止了讀入過程,并將 str[5]的內(nèi)容置為‘ \0?,表示字符串結(jié)束。 【 例 】 實現(xiàn)一個程序 readline,該程序從指定文件中每次讀取一行顯示在屏幕上。 include include void main(int argc,char *argv[]) { char buf[256]。 FILE *fp。 int n = 1。 if(argc!=2){ printf(usage: readline filename\n)。 exit(1)。 } if((fp=fopen(argv[1],rt))==NULL){ printf(Error opening file %s!\n, argv[1])。 exit(1)。 } while (fgets(buf, 256, fp) != NULL )
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1