C語言文件習(xí)題_第1頁
C語言文件習(xí)題_第2頁
C語言文件習(xí)題_第3頁
C語言文件習(xí)題_第4頁
C語言文件習(xí)題_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

文件整理ppt引子輸入處理輸出鍵盤內(nèi)存顯示器磁盤磁盤文件scanfgetchargets...printfputcharputs...1整理ppt第十一章文件本章學(xué)習(xí)要點正確理解文件的概念,文件系統(tǒng)的特點;掌握文件指針的概念和定義方法;熟練使用文件讀寫函數(shù),學(xué)會定位文件指針。掌握本章內(nèi)容的捷徑:對文件永遠是:打開——操作——關(guān)閉學(xué)會文件操作庫函數(shù)(即標(biāo)準(zhǔn)I/O庫函數(shù))的用法2整理ppt第十一章文件文件概述文件處理文件順序讀寫文件隨機操作文件檢測文件實例3整理ppt11.1文件概述文件的定義

存儲在外部介質(zhì)上(如磁盤和磁帶等外存儲器)的數(shù)據(jù)或信息的集合。 例如:程序文件中保存著程序,而數(shù)據(jù)文件中保存著數(shù)據(jù)。

main.c C語言源程序文本文件

main.obj 目標(biāo)文件

二進制文件

main.exe 可執(zhí)行文件 二進制文件4整理ppt11.1文件概述文件的性質(zhì)

文件是一個有序的數(shù)據(jù)序列,數(shù)據(jù)之間有著嚴格的排列次序關(guān)系,可以按照它們的排列順序,依次進行訪問,也可以按照需要,訪問任意位置上的數(shù)據(jù)。5整理ppt系統(tǒng)對文件的處理過程

系統(tǒng)對文件的處理過程就是對文件進行輸入/輸出操作的過程。文件程序數(shù)據(jù)區(qū)輸出文件緩沖區(qū)輸入文件緩沖區(qū)計算機內(nèi)存計算機外存寫文件稱為輸出讀文件稱為輸入6整理ppt11.1文件概述文件的分類文本文件二進制文件普通文件(磁盤文件)特殊文件(標(biāo)準(zhǔn)設(shè)備文件)緩沖文件系統(tǒng)非緩沖文件系統(tǒng)7整理ppt從文件數(shù)據(jù)的組織形式(存儲格式)看ASCII文件(或稱文本文件,即TEXT文件)文本文件中的數(shù)據(jù)采用ASCII碼格式存儲,全部數(shù)據(jù)轉(zhuǎn)換為ASCII碼。每個ASCII字符占1個字節(jié)。ASCII文件使用文本編輯器可直接閱讀。二進制文件

對數(shù)據(jù)在內(nèi)存中的二進制存儲格式不做任何轉(zhuǎn)換,直接存入文件,形成二進制文件。二進制文件在操作系統(tǒng)下不能直接閱讀。8整理ppt11.1文件概述

例如:將整數(shù)1024分別存儲到ASCII文件和二進制文件中,將采用不同的編碼形式,占用不同的字節(jié)長度。內(nèi)存中的存儲形式:補碼0000010000000000ASCII文件:ASCII碼’1’’0’’2’’4’二進制文件:補碼0000010000000000占4個字節(jié)占2個字節(jié)9整理ppt比較:

ASCII文件中,每個字符以ASCII碼形式存儲,方便對字符的逐個處理;在操作系統(tǒng)下或使用文本編輯器時,可以直接閱讀、修改,方便與其它系統(tǒng)進行數(shù)據(jù)交換。缺點是占用磁盤存儲空間多,并且系統(tǒng)要付出將內(nèi)存中的二進制形式轉(zhuǎn)為ASCII碼的時間開銷。用二進制形式輸出,可以節(jié)省磁盤空間和轉(zhuǎn)換時間,但輸出的數(shù)據(jù)因為是內(nèi)存中的格式,在操作系統(tǒng)下和一般的編輯器中不能直接識別。10整理ppt11.1文件概述從用戶觀點看普通文件(也稱為磁盤文件)特殊文件(也稱為標(biāo)準(zhǔn)設(shè)備文件或標(biāo)準(zhǔn)I/O文件)

普通文件是以磁盤為對象且無其它特殊性能的文件。 特殊文件是以終端為對象的標(biāo)準(zhǔn)的設(shè)備文件。11整理ppt11.1文件概述

在C語言中,“文件”的概念具有更廣泛的意義。與每臺主機相連的所有輸入輸出設(shè)備都看作是一個文件。即將實際的物理設(shè)備抽象為邏輯文件,它們也被稱為設(shè)備文件。 例如:鍵盤是輸入文件stdin(標(biāo)準(zhǔn)輸入文件)顯示器是輸出文件stdout(標(biāo)準(zhǔn)輸出文件)打印機是輸出文件PRN12整理ppt11.1文件概述從C語言對文件的處理方法看緩沖文件系統(tǒng)非緩沖文件系統(tǒng)

緩沖文件系統(tǒng):對每個正在使用的文件,系統(tǒng)自動在內(nèi)存中為其開辟一個文件緩沖區(qū)。稱為高級文件操作。 非緩沖文件系統(tǒng):系統(tǒng)不會自動開辟緩沖區(qū),文件緩沖區(qū)是由程序自己設(shè)置的。稱為低級文件操作。13整理ppt11.1文件概述

在83年以后ANSIC標(biāo)準(zhǔn)中取消了非緩沖文件系統(tǒng),對文本文件和二進制文件均統(tǒng)一采用緩沖文件系統(tǒng)進行處理。本課程學(xué)習(xí): 緩沖式文件操作方式下,對磁盤文件進行基本操作。對文本文件和二進制文件有不同的處理方式。使用標(biāo)準(zhǔn)輸入/輸出庫(stdio.h)函數(shù)來實現(xiàn)文件操作。14整理ppt第十一章文件文件概述文件處理文件順序讀寫文件隨機操作文件檢測文件實例15整理ppt文件類型FILE

在緩沖文件系統(tǒng)中,用一個FILE類型的結(jié)構(gòu)變量來描述一個文件,該結(jié)構(gòu)變量用于存放文件的有關(guān)信息,如文件名、文件狀態(tài)等。 在C語言中,無論是一般磁盤文件還是設(shè)備文件,都要通過文件結(jié)構(gòu)的數(shù)據(jù)集合進行輸入輸出處理。 文件結(jié)構(gòu)不需要用戶自己定義,是由系統(tǒng)事先定義好的,包含在頭文件stdio.h中,用戶可以直接使用。11.2文件處理16整理ppt文件結(jié)構(gòu)類型FILE:typedefstruct{int_fd;

/*文件位置指針,即當(dāng)前文件的讀寫位置*/int_cleft;

/*文件緩沖區(qū)中剩余的字節(jié)數(shù)*/int_mode;

/*文件操作模式*/char*nextc;

/*用于文件讀寫的下一個字符位置*/

char*_buff;

/*文件緩沖區(qū)位置(指針)*/}FILE;文件結(jié)構(gòu)變量在打開文件時由操作系統(tǒng)自動建立,用戶使用文件時無需重復(fù)定義。在使用文件的時候要使用文件包含命令:#include<stdio.h>類型說明語句typedef:定義新的類型來代替已有類型:typedefintINT17整理ppt11.2文件處理如何引用文件結(jié)構(gòu)——文件指針

C語言中對文件的操作都要通過指向該文件結(jié)構(gòu)的指針。文件指針變量說明形式:FILE*文件型指針變量名;

例如:

FILE*fp;/*fp是一個指針變量*/文件指針是程序和文件聯(lián)系的紐帶18整理ppt使用文件的一般步驟打開文件→操作文件→關(guān)閉文件打開文件:建立用戶程序與文件的聯(lián)系,為文件開辟文件緩沖區(qū)。操作文件:是指對文件的讀、寫、追加和定位操作:讀操作:將文件中的數(shù)據(jù)讀入計算機。寫操作:向文件輸出數(shù)據(jù)。追加操作:將數(shù)據(jù)寫到原有數(shù)據(jù)的后面。定位操作:移動文件讀寫位置指針。關(guān)閉文件:切斷文件與程序的聯(lián)系,將文件緩沖區(qū)的內(nèi)容寫入磁盤,并釋放文件緩沖區(qū)。19整理ppt打開文件(fopen)fopen函數(shù)的調(diào)用形式是:

FILE*fp;

fp=fopen(文件名,文件使用方式);

文件名:需要打開的文件名稱(字符串)。

文件使用方式:是具有特定含義的符號。

函數(shù)功能:按指定的文件使用方式打開指定的文件。若文件打開成功,則返回值為非NULL指針;若文件打開失敗,返回NULL。為該文件建立一個文件結(jié)構(gòu)(變量),然后讓指針指向該文件結(jié)構(gòu)例:fp=fopen("file1","r"))20整理ppt11.2文件處理文本文件的三種基本打開方式“r”:只讀方式。為讀(輸入)文本文件打開文件。若文件不存在,則返回NULL?!皐”:只寫方式。為寫(輸出)文本文件打開文件。若文件不存在,則建立一個新文件;若文件已存在,則要將原來的文件清空?!癮”:追加方式。在文本文件的末尾增加數(shù)據(jù)。若文件已存在,則保持原來文件的內(nèi)容,將新的數(shù)據(jù)增加到原來數(shù)據(jù)的后面;若文件不存在,則創(chuàng)建。21整理ppt二進制文件的三種基本打開方式“rb”:只讀方式“wb”:只寫方式“ab”:追加方式文件的其它打開方式“r+”:可對文本文件進行讀/寫操作。若文件不存在返回NULL;若文件存在,內(nèi)容不會被清空?!皐+”:可對文本文件進行讀/寫操作。若文件已經(jīng)存在,則要先將文件原來的內(nèi)容清空。“a+”:可對文本文件進行讀/追加操作。“rb+”:可對二進制文件進行讀/寫操作?!皐b+”:可對二進制文件進行讀/寫操作?!癮b+”:可對二進制文件進行讀/追加操作。22整理ppt常見文件打開操作if((fp=fopen("filename","r"))==NULL){printf("Cannotopenfile.\n");exit(0);/*打開文件出錯,調(diào)用庫函數(shù)終止程序*/}

含義:以只讀方式打開文件名為filename的文件。文件名可以是從盤符開始的完整路徑名,也可以是相對路徑。11.2文件處理23整理ppt11.2文件處理練習(xí):以下可作為函數(shù)fopen中第一個參數(shù)的正確格式是:

A.c:user\text.txt B.c:\user\text.txt C."c:\user\text.txt" D."c:\\user\\text.txt"24整理ppt11.2文件處理char*pfilename;……if((fp=fopen(pfilename,"r"))==NULL){printf("Cannotopenfile.\n");exit(0);}

含義:以只讀方式打開以pfilename指向的字符串為文件名的文件。25整理ppt關(guān)閉文件(fclose) fclose函數(shù)的調(diào)用形式:

FILE*fp;….. fclose(fp); fp:已經(jīng)打開的文件指針。函數(shù)功能關(guān)閉fp指定的文件,切斷緩沖區(qū)與該文件的聯(lián)系,并釋放文件指針。若文件關(guān)閉成功,返回值為0;若文件關(guān)閉失敗,返回非0值。26整理ppt11.2文件處理系統(tǒng)標(biāo)準(zhǔn)設(shè)備文件

標(biāo)準(zhǔn)設(shè)備文件由系統(tǒng)自動打開和關(guān)閉,其文件結(jié)構(gòu)的指針由系統(tǒng)命名,用戶在程序中可直接使用。

C語言中提供了三個標(biāo)準(zhǔn)設(shè)備文件的指針:stdin標(biāo)準(zhǔn)輸入文件(鍵盤)stdout標(biāo)準(zhǔn)輸出文件(顯示器)stderr標(biāo)準(zhǔn)錯誤輸出文件(顯示器)27整理ppt第十一章文件文件概述文件處理文件順序讀寫文件隨機操作文件檢測文件實例28整理ppt11.3文件順序讀寫文件順序操作

對文件的操作(文件讀寫)必須按文件中字符的先后順序進行,只能在操作了第i個字符之后,才能操作第i+1個字符。 在對文件操作時,文件的位置指針由系統(tǒng)自動向前(文件尾方向)移動。29整理ppt11.3文件順序讀寫進行順序操作的函數(shù):字符輸入輸出函數(shù)fgetcfputc字符串輸入輸出函數(shù)fgetsfputs格式化輸入輸出函數(shù)fscanffprintf數(shù)據(jù)塊輸入輸出函數(shù)freadfwrite30整理ppt鍵盤文件內(nèi)存顯示器文件磁盤文件磁盤文件scanfgetchargets...printfputcharputs...fscanffgetcfgetsfread...fprintffputcfputsfwrite...31整理ppt字符輸入輸出(fgetc/fputc)

輸入函數(shù):

ch=fgetc(fp);fp為已經(jīng)打開的文件的指針 函數(shù)功能:從指定的文件中讀取一個字符。即:從fp所指向的文件(該文件必須是以讀或讀寫方式打開的)中讀取一個字符返回,讀取的字符賦給變量ch。 若讀取字符時文件已經(jīng)結(jié)束或出錯:對于ASCII文件,文件結(jié)束時,返回文件結(jié)束標(biāo)記EOF(-1);對于二進制文件,要使用feof函數(shù)來判斷文件是否結(jié)束。32整理ppt11.3文件順序讀寫

輸出函數(shù):

fputc(ch,fp); ch為需要輸出的字符 函數(shù)功能:將一個字符輸出到指定文件中。即將字符變量ch中的字符輸出到fp所指向的文件。若輸出操作成功,該函數(shù)返回輸出的字符;否則,返回EOF。33整理ppt例:顯示一個文本文件的內(nèi)容#include<stdio.h>intmain(){

FILE*

fp;

charfilename[20],ch;

printf("Enterfilename:");

scanf("%s",filename);

/*輸入文件名*/

if((fp=fopen(filename,"r"))==NULL)

/*打開*/

{ printf(“fileopenerror.\n”);

/*出錯處理*/ exit(0);

}

while((ch=fgetc(fp))!=EOF)

/*讀字符*/

putchar(ch);

fclose(fp);

/*關(guān)閉文件*/}34整理ppt例:使用標(biāo)準(zhǔn)輸出文件顯示文本文件內(nèi)容#include<stdio.h>intmain(){

FILE*

fp;

charfilename[20],ch;

printf("Enterfilename:");

scanf("%s",filename);

/*輸入文件名*/

if((fp=fopen(filename,"r"))==NULL)

/*打開*/

{ printf(“fileopenerror.\n”);

/*出錯處理*/ exit(0);

}

while((ch=fgetc(fp))!=EOF)

/*讀字符*/

fputc(ch,stdout);

/*向標(biāo)準(zhǔn)輸出文件輸出(顯示)*/

fclose(fp);

/*關(guān)閉文件*/}35整理ppt例:復(fù)制文本文件intmain(){FILE*

fp1,*

fp2;charfile1[20],file2[20],ch;printf("Enterfilename1:");scanf("%s",file1);printf("Enterfilename2:");scanf("%s",file2);if((fp1=fopen(file1,“r”))==NULL)

/*打開文件1*/{ printf("file1openerror.\n");

exit(0);

}if((fp2=fopen(file2,“w”))==NULL)

/*打開文件2*/{ printf("file2openerror.\n");

exit(0);

}while((ch=fgetc(fp1))!=EOF)

/*從文件fp1中讀字符*/

fputc(ch,fp2);

/*寫入文件fp2中*/fclose(fp1);fclose(fp2);}36整理pptputchar

(ch);fputc(ch,stdout);fputc(ch,fp2);37整理ppt11.3文件順序讀寫字符串輸入輸出(fgets/fputs)

輸入函數(shù):

fgets(

s,n,fp

);

chars[];

intn;

FILE*

fp;

函數(shù)功能:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數(shù)組s中。函數(shù)的返回值為字符數(shù)組s的首地址;如果文件結(jié)束或出錯,則返回NULL。38整理ppt11.3文件順序讀寫情況1:已讀入n-1

個字符 則:s

中存入n-1

個字符,串尾為\0情況2:讀入字符遇到\n

則:s

中存入實際讀入的字符,串尾為\n\0情況3:讀入字符遇到文件尾 則:s

中存入實際讀入的字符,EOF不存入數(shù)組,串尾為\0情況4:當(dāng)文件已經(jīng)結(jié)束時,繼續(xù)讀文件 則函數(shù)返回NULL,表示文件結(jié)束39整理pptabcd\nf執(zhí)行過程打開文本文件:fp①fgets(s,4,fp);abc\0s文件的讀寫位置指針abcd\nf初始狀態(tài)順序讀入3個字符,存入數(shù)組,加上\0②fgets(s,4,fp);順序讀入\n,存入數(shù)組,退出,加上\0d\n\0s讀入字符:a文件指針自動向后移動b文件指針自動向后移動c文件指針自動向后移動d文件指針自動向后移動\n文件指針自動向后移動③fgets(s,4,fp);順序讀入遇到EOF,不存退出,加上\0f\0sf文件指針自動向后移動④fgets(s,4,fp);讀入EOF,不存,函數(shù)返回NULLEOF40整理pptintmain(){

FILE*

fp;

charfile[20],s[4];

printf("Enterfilename:");

scanf("%s",file);

if((fp=fopen(file,"r"))==NULL)

{

printf("fileopenerror.\n");

exit(0);

}

while(fgets(s,4,fp)!=NULL)

printf("%s",s);

fclose(fp);}abcd\nfabcd\nf輸入文件:輸出:fgets語句執(zhí)行四次,循環(huán)執(zhí)行三次用長度為4的數(shù)組實現(xiàn)對文件內(nèi)容的原樣輸出無關(guān)緊要41整理ppt11.3文件順序讀寫

輸出函數(shù):

fputs(

s,fp

);

chars[];

FILE*

fp;

函數(shù)功能:

將s指向的字符串或字符串常量寫入文件fp。輸出的字符串寫入文件時,字符串結(jié)束標(biāo)記“\0”被自動舍去。 函數(shù)調(diào)用成功,則返回值為0;否則,返回文件結(jié)束標(biāo)記EOF。42整理pptintmain(){FILE*

fp1,*

fp2;charfile1[20],file2[20],s[10];printf("Enterfilename1:");scanf("%s",file1);printf("Enterfilename2:");scanf("%s",file2);if((fp1=fopen(file1,"r"))==NULL)

/*打開文件1*/{ printf("file1openerror.\n");

exit(0);}if((fp2=fopen(file2,"w"))==NULL)

/*打開文件2*/{ printf("file2openerror.\n");

exit(0);}while(fgets(s,10,fp1)!=NULL)

/*從fp1讀出字符*/

fputs(s,fp2

);

/*將字符串寫入文件fp2中*/fclose(fp1);

fclose(fp2);}

例:復(fù)制文本文件43整理ppt格式化輸入輸出(fscanf/fprintf)

輸入函數(shù):fscanf(fp,格式控制符,變量地址表);

功能:從ASCII文件fp中讀取字符,按格式控制符的含義存入對應(yīng)的變量中,返回值為輸入的數(shù)據(jù)個數(shù)。fscanf與scanf類似,格式控制符相同。

輸出函數(shù):fprintf(

fp,

格式控制符,表達式列表);

功能:將表達式列表中的數(shù)據(jù)按照格式控制符的說明,存入ASCII文件fp中,返回值為實際存入的數(shù)據(jù)個數(shù)。fprintf與printf類似,格式控制符相同。44整理pptintmain(){

FILE*

fp1;

inta;

charfile[20],s[10];

printf("Enterfilename:");

scanf("%s",file);

if((fp=fopen(file,"r"))==NULL)

{

printf("fileopenerror.\n");

exit(0);}fscanf(fp,"%s%d",s,&a);fprintf(stdout,"%s%d\n",s,a);

fclose(fp);}printf("%s%d\n",s,a);注意此間發(fā)生的二進制和ASCII碼的轉(zhuǎn)換45整理ppt數(shù)據(jù)塊輸入輸出(fread/fwrite)

輸入函數(shù):

fread(buffer,size,count,fp);char*buffer;

unsignedsize;

intcount;

FILE*

fp;

函數(shù)功能:從二進制文件fp中讀取count個數(shù)據(jù)塊存入buffer中,每個數(shù)據(jù)塊的大小為size個字節(jié)。操作成功,函數(shù)的返回值為實際讀入的數(shù)據(jù)塊的數(shù)量;若文件結(jié)束或出錯,返回值為0。46整理ppt11.3文件順序讀寫

輸出函數(shù):

fwrite(buffer,size,count,fp);char*buffer;

unsignedsize;

intcount;

FILE*

fp;

函數(shù)功能:將buffer中的count個數(shù)據(jù)塊寫入二進制文件fp中,每個數(shù)據(jù)塊的大小為size個字節(jié)。操作成功,函數(shù)的返回值為實際寫入文件的數(shù)據(jù)塊的數(shù)量;若文件結(jié)束或出錯,返回值為0。47整理ppt

從鍵盤輸入3個學(xué)生的數(shù)據(jù),將它們存入文件student;然后再從文件中讀出數(shù)據(jù),顯示在屏幕上。#defineSIZE3structstudent /*定義結(jié)構(gòu)*/{longnum;charname[10];intage;charaddress[10];}stu[SIZE],out;voidfsave(){FILE*fp;inti;if((fp=fopen(“student”,“wb”))==NULL)/*二進制寫*/{printf("Cannotopenfile.\n");exit(1);}for(i=0;i<SIZE;i++)/*以數(shù)據(jù)塊形式寫入文件*/if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("Filewriteerror.\n"); /*出錯處理*/fclose(fp); /*關(guān)閉文件*/}寫入一個整型:inta=15;fwrite(&a,sizeof(int),1,fp);48整理ppt主函數(shù)intmain(){FILE*fp;inti;for(i=0;i<SIZE;i++)/*從鍵盤讀入學(xué)生的信息*/{printf("Inputstudent%d:",i+1);scanf("%ld%s%d%s",&stu[i].num,stu[i].name, &stu[i].age,stu[i].address);}fsave();/*調(diào)用函數(shù)保存學(xué)生信息*/fp=fopen("student","rb");/*二進制讀方式*/printf("No.NameAgeAddress\n");while(fread(&out,sizeof(out),1,fp))/*讀數(shù)據(jù)塊*/printf("%8ld%-10s%4d%-10s\n",out.num,,out.age,out.address);fclose(fp);/*關(guān)閉文件*/}鍵盤-結(jié)構(gòu)數(shù)組-文件文件-結(jié)構(gòu)變量-顯示器49整理ppt第十一章文件文件概述文件處理文件順序讀寫文件隨機操作文件檢測文件實例50整理ppt11.4文件隨機操作文件讀寫操作的內(nèi)部機制文件的讀寫是通過文件系統(tǒng)內(nèi)部的“位置指針(讀寫位置指針)”進行的。當(dāng)打開一個文件時,系統(tǒng)自動為這個打開的文件建立一個位置指針,對該文件的讀寫操作均通過位置指針進行操作。fopen后位置指針指向文件中第0個字節(jié)(位置指針指向已經(jīng)讀入的最后一個字節(jié))。文件結(jié)束時,位置指針指向文件最后1個字符的位置(調(diào)用feof函數(shù)為非0,表示文件已經(jīng)結(jié)束)。51整理ppt順序讀寫操作

在順序讀寫文件時,文件的位置指針由系統(tǒng)自動控制,每次讀寫操作,系統(tǒng)都會先將位置指針移到文件的下一個字節(jié),然后再進行讀寫操作。 在不改變文件的讀寫位置指針的情況下,只能對文件進行順序操作。隨機讀寫操作

通過改變文件的位置指針,可在文件的任意位置進行讀寫操作。與文件位置指針有關(guān)的函數(shù):

fseek 移動文件的位置指針

rewind 文件的位置指針回到文件頭位置

ftell 取文件的位置指針52整理ppt位置指針移動(fseek)

fseek(fp,offset,position);

FILE*

fp;

longoffset;

intposition;

函數(shù)功能: 將指定文件fp的文件讀寫位置指針按照position規(guī)定的方式移動offset

個字節(jié)。移動成功返回當(dāng)前位置;否則,返回-1。

position為起始點,指出以文件的什么位置為基準(zhǔn)進行移動:

0──文件的開頭;

1──文件的當(dāng)前位置;

2──文件的末尾。53整理ppt11.4文件隨機操作實例:執(zhí)行fopen成功后:文件讀寫位置指針為文件的第0個字節(jié)

fseek

(

fp,

50,

0

);

從文件頭開始向前(文件尾方向)移動50個字節(jié)如果繼續(xù)進行fgetc,將讀入第51個字符

fseek

(

fp,

-10,

1

);

從當(dāng)前位置向后(文件頭方向)移動10個字節(jié)

fseek

(

fp,0,0);

文件指針回到文件頭,文件指針值回到00─文件的開頭;1─文件的當(dāng)前位置;2─文件的末尾。54整理ppt11.4文件隨機操作實例:

fseek

(

fp,

0,2)

將文件位置指針移動到文件最后一個字符的后面,可以簡單認為是指向了文件結(jié)束標(biāo)記EOFfseek

(

fp,

-1,

2

)

文件指針指向最后一個字符

fseek

(

fp,

-2,

2

)

文件倒數(shù)第2個字符(文件最后一個字符之前)fseek

(

fp,

-20,

2

)

從文件尾開始向后(文件頭方向)移動20個字節(jié)0─文件的開頭;1─文件的當(dāng)前位置;2─文件的末尾。55整理ppt11.4文件隨機操作位置指針返回到文件頭(rewind)rewind(fp);

函數(shù)功能: 使指定文件fp的讀寫位置指針重新定位到文件的頭位置。即:使文件位置指針回到0。 等價于:fseek

(

fp,0,

0

)56整理ppt11.4文件隨機操作取位置指針(ftell)ftell(fp);

函數(shù)功能: 取fp所指向文件的當(dāng)前讀寫位置,即文件讀寫位置指針的當(dāng)前值。 該值是一個長整型數(shù),是位置指針從文件開始處到當(dāng)前位置的位移量的字節(jié)數(shù)。 如果函數(shù)的返回值為-1L,表示出錯。57整理ppt第十一章文件文件概述文件處理文件順序讀寫文件隨機操作文件檢測文件實例58整理ppt11.5文件檢測檢測文件操作后的狀態(tài)

一般情況下應(yīng)該檢驗的文件狀態(tài)有:文件是否結(jié)束?文件操作是否出錯?

C語言提供了兩種手段來反映函數(shù)調(diào)用的情況和文件的狀態(tài):使用函數(shù)的返回值可以知道各種文件調(diào)用(操作)是否成功;使用檢測函數(shù)可以判斷文件的操作狀態(tài)和出錯狀態(tài)。59整理ppt檢測文件結(jié)束函數(shù)feof(fp)

功能:若文件已經(jīng)結(jié)束,返回值為非0;若文件尚未結(jié)束,返回值為0。檢測文件出錯函數(shù)ferror(fp)

功能:若文件出錯,返回值為非0;若文件未出錯,返回值為0。清除出錯標(biāo)記及文件結(jié)束標(biāo)記clearerr

(fp)

功能:清除文件fp的出錯和文件結(jié)束標(biāo)記。60整理ppt函數(shù)形式含義正常返回錯誤返回fp=fopen(f,m)以m方式打開名為f的文件指向f的文件指針NULL(0)fclose(fp)關(guān)閉fp所指文件0非0ch=fgetc(fp)從fp取下個字符得到的字符EOF(-1)fputc(ch,fp)輸出ch到fp該字符EOFfgets(s,n,fp)從fp中讀入不多于n個字符到串ss首地址NULLfputs(s,fp)將串s輸出到fp0EOFfscanf(fp,format,args)從fp按格式讀數(shù)據(jù)到arg(地址)中已輸入的數(shù)據(jù)個數(shù)fprintf(fp,format,args)從arg(地址)中按格式寫數(shù)據(jù)到fp實際輸出的數(shù)據(jù)個數(shù)61整理ppt函數(shù)形式含義正常返回錯誤返回fread(pt,size,n,fp)從fp讀長度size的n個數(shù)據(jù)項到pt所指內(nèi)存區(qū)所讀數(shù)據(jù)項個數(shù)0fwrite(pt,size,n,fp)從pt所指內(nèi)存區(qū)寫長度為size的n個數(shù)據(jù)到fp寫到fp的數(shù)據(jù)項個數(shù)fseek(fp,n,p)以p為基準(zhǔn)移動n個字節(jié)當(dāng)前位置-1rewind(fp)讀寫指針到文件頭ftell(fp)返回讀寫位置讀寫位置-1Lfeof(fp)是否到文件尾沒到文件尾,返回0到文件尾,非0ferror(fp)fp是否有錯無錯,0有錯,非062整理ppt第十一章文件文件概述文件處理文件順序讀寫文件隨機操作文件檢測文件實例63整理ppt11.6文件實例從計算機的內(nèi)存中將數(shù)據(jù)寫入文件,稱為

。

A.輸入B.輸出C.修改D.刪除C語言可以處理的文件類型是

。

A.文本文件和數(shù)據(jù)文件B.文本文件和二進制文件

C.數(shù)據(jù)文件和二進制文件D.以上答案都不完全下列關(guān)于文件的結(jié)論中正確的是

A.對文件操作必須先關(guān)閉文件

B.對文件操作必須先打開文件

C.對文件的操作順序沒有統(tǒng)一規(guī)定

D.以上三種答案全是錯誤的64整理ppt11.6

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論