C語言程序設(shè)計項目式教程:文件操作_第1頁
C語言程序設(shè)計項目式教程:文件操作_第2頁
C語言程序設(shè)計項目式教程:文件操作_第3頁
C語言程序設(shè)計項目式教程:文件操作_第4頁
C語言程序設(shè)計項目式教程:文件操作_第5頁
已閱讀5頁,還剩74頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

文件操作C語言程序設(shè)計任務(wù)驅(qū)動式教程導(dǎo)學(xué)C程序如何從文本文件讀取數(shù)據(jù)呢??文件基本知識任務(wù)一1、文件文件程序文件源程序文件(.c)目標(biāo)文件(.obj)數(shù)據(jù)文件供程序運(yùn)行時讀寫的數(shù)據(jù)可執(zhí)行文件(.exe)文件基本知識任務(wù)一所謂“文件”一般指存儲在外部介質(zhì)上數(shù)據(jù)的集合。操作系統(tǒng)是以文件為單位對數(shù)據(jù)進(jìn)行管理的,如果想找存放在外部介質(zhì)上的數(shù)據(jù),必須先按文件名找到所指定的文件,然后再從該文件中讀取數(shù)據(jù)。要向外部介質(zhì)上存儲數(shù)據(jù)也必須先建立一個文件(以文件名作為標(biāo)志),才能向它輸出數(shù)據(jù)。1、什么是文件?文件基本知識任務(wù)一2、文件名一個文件要有一個唯一的文件標(biāo)識,以便用戶識別和引用。文件標(biāo)識包括3部分:(1)文件路徑

文件在外部存儲設(shè)備中的位置。(2)文件名主干

是遵循命名規(guī)則標(biāo)識符的命名規(guī)則。(3)文件后綴

用來表示文件的性質(zhì)。文件基本知識任務(wù)一如:表示file1.dat文件存放在D盤中的CC目錄下的temp子目錄下面。

D:\CC\temp\file1.dat

文件路徑文件主干名文件后綴2、文件名3、文件的分類數(shù)據(jù)文件數(shù)據(jù)的組織形式ASCⅡ文本/文本文件二進(jìn)制文件/映像文件文件基本知識任務(wù)一ASCⅡ形式文件的特點(diǎn):便于對字符逐個處理便于輸出字符占據(jù)存儲空間大轉(zhuǎn)換需要時間二進(jìn)制形式文件的特點(diǎn):節(jié)省存儲空間。節(jié)省轉(zhuǎn)換時間2、文件的分類文件基本知識任務(wù)一3、緩沖文件系統(tǒng)緩沖文件系統(tǒng):系統(tǒng)自動地在內(nèi)存區(qū)為程序中每一個正在使用的文件開辟一個文件緩沖區(qū)文件基本知識任務(wù)一3、緩沖文件系統(tǒng)文件基本知識任務(wù)一4、文件類型指針文件基本知識任務(wù)一例如有一種c編譯環(huán)境提供的stdio.h頭文件中有以下的文件類型聲明:typedefstruct

{shortlevel;//緩沖區(qū)“滿”或“空”的程度。

unsignedflags;//文件狀態(tài)標(biāo)志charfd;//文件描述符

unsignedcharhold;//如緩沖區(qū)無內(nèi)容不讀取字符

shortbsize;//緩沖區(qū)的大小

unsignedchar*buffer;//數(shù)據(jù)緩沖區(qū)的位置

unsignedchar*curp;//文件位置標(biāo)記指針當(dāng)前的指向

unsignedistemp;//臨時文件指示器

shorttoken;//用于有效性檢查

}FILE;一種C編譯環(huán)境供的stdio.h頭文件中有以下的文件類型聲明4、文件類型指針文件基本知識任務(wù)一FILE*fp;//定義一個指向FILE類型數(shù)據(jù)的指針變量4、文件類型指針文件基本知識任務(wù)一FILE*fp;//定義一個指向FILE類型數(shù)據(jù)的指針變量4、文件類型指針文件基本知識任務(wù)一FILE*fp;//定義一個指向FILE類型數(shù)據(jù)的指針變量注意:指向文件的指針變量并不是指向外部介質(zhì)上的數(shù)據(jù)文件的開頭,而是指向內(nèi)存中的文件信息區(qū)的開頭。4、文件類型指針學(xué)習(xí)總結(jié)答一答1、什么是文件?2、什么是文件名?3、什么是緩沖文件系統(tǒng)?4、什么是文件類型指針?任務(wù)一文件基本知識感謝觀看!文件操作C語言程序設(shè)計任務(wù)驅(qū)動式教程導(dǎo)學(xué)C程序如何打開和關(guān)閉文件呢??文件的打開與關(guān)閉任務(wù)二打開文件:為文件建立相應(yīng)的信息區(qū)和文件緩沖區(qū)信息區(qū):用來存放有關(guān)文件的信息緩沖區(qū):用來暫時時存放輸入輸出的數(shù)據(jù)讀寫文件關(guān)閉文件用1、文件的打開與關(guān)閉文件的打開與關(guān)閉任務(wù)二打開文件:為文件建立相應(yīng)的信息區(qū)和文件緩沖區(qū)讀寫文件關(guān)閉文件用:撤銷文件信息區(qū)和文件緩沖區(qū)1、文件的打開與關(guān)閉文件的打開與關(guān)閉任務(wù)二用fopen函數(shù)打開數(shù)據(jù)文件:

fopen(文件名,使用文件方式);例如:FILE*fp;

fp=fopen(“a1”,”r”);

“a1”:表示要打開文件的名字為a1

“r”:read,就是使用文件方式為“讀入”

函數(shù)返回值:指向文件的指針變量1、文件的打開與關(guān)閉文件的打開與關(guān)閉任務(wù)二用fopen函數(shù)打開數(shù)據(jù)文件:

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

FILE*fp;

fp=fopen(“a1”,”r”);完整的寫法:定義一個指向文件的指針變量fp,將fopen函數(shù)的返回值賦給指針變量fp,然后再用fopen函數(shù)去打開文件,并將返回值賦給指針變量fp,這樣fp就和文件a1相聯(lián)系起來了,即fp指向了a1文件。1、文件的打開與關(guān)閉文件的打開與關(guān)閉任務(wù)二在打開一個文件時,要通知編譯系統(tǒng)3個信息:需要打開的文件的名字即準(zhǔn)備訪問的文件名字。使用文件的方式——讀/寫讓指針變量指向打開的文件1、文件的打開與關(guān)閉用fopen函數(shù)打開數(shù)據(jù)文件:fopen(文件名,使用文件方式);文件的打開與關(guān)閉任務(wù)二文件的打開使用方式文件的打開與關(guān)閉任務(wù)二不能打開文件,F(xiàn)open函數(shù)返回值NULL(空指針)原因:用“r”方式打開一個不存在的文件磁盤故障磁盤已滿,無法建立新文件……if((fp=fopen("file”,”r”))==NULL){printf("cannotopenthisfile\n‘);

exit(0);}通常采用下面的方法來打開文件:文件的打開與關(guān)閉任務(wù)二換行的處理:C語言‘\n’表示換行Windows系統(tǒng)‘\r’(回車)和‘\n’(換行)一起使用表示換行用fopen函數(shù)打開數(shù)據(jù)文件:fopen(文件名,使用文件方式);“w”方式打開轉(zhuǎn)換文件的打開與關(guān)閉任務(wù)二換行的處理:C語言‘\n’表示換行Windows系統(tǒng)‘\r’(回車)和‘\n’(換行)一起使用表示換行用fopen函數(shù)打開數(shù)據(jù)文件:fopen(文件名,使用文件方式);“r”方式打開轉(zhuǎn)換文件的打開與關(guān)閉任務(wù)二換行的處理:C語言‘\n’表示換行Windows系統(tǒng)‘\r’(回車)和‘\n’(換行)一起使用表示換行用fopen函數(shù)打開數(shù)據(jù)文件:fopen(文件名,使用文件方式);加b打開二進(jìn)制文件,不轉(zhuǎn)換文件的打開與關(guān)閉任務(wù)二輸出數(shù)據(jù)形式由讀寫語句決定:fscanf和fprintf:按ASCⅡ方式輸入輸出freadfwrite:按二進(jìn)制方式輸入輸出用fopen函數(shù)打開數(shù)據(jù)文件:fopen(文件名,使用文件方式);文件的打開與關(guān)閉任務(wù)二標(biāo)準(zhǔn)流文件:標(biāo)準(zhǔn)輸入流終端標(biāo)準(zhǔn)輸出流終端標(biāo)準(zhǔn)出錯輸出流(當(dāng)程序出錯時)終端系統(tǒng)自動打開用fopen函數(shù)打開數(shù)據(jù)文件:fopen(文件名,使用文件方式);文件的打開與關(guān)閉任務(wù)二用fclose函數(shù)關(guān)閉數(shù)據(jù)文件:fclose(文件指針);如:fclose(fp);如果不關(guān)閉文件就結(jié)束程序運(yùn)行將會丟失數(shù)據(jù)。學(xué)習(xí)總結(jié)答一答1、簡要說明文件的打開與關(guān)閉方式?任務(wù)二文件的打開與關(guān)閉感謝觀看!文件的操作C語言程序設(shè)計任務(wù)驅(qū)動式教程導(dǎo)學(xué)C程序如何向文件讀寫一個字符呢??文件的順序讀寫任務(wù)三讀寫一個字符的函數(shù):1、怎樣向文件讀寫字符函數(shù)名調(diào)用形式功能返回值fgetcfgetc(fp)從fp指向的文件讀入一個字符讀成功,帶回所讀的字符,失敗返回文件結(jié)束標(biāo)志EOF(即-1)fputcfputc(ch,fp)把字符ch寫到文件指針變量fp所指向的文件中輸出成功,返回值就是輸出的字符;輸出失敗,則返回EOF(即-1)文件的順序讀寫任務(wù)三例:從鍵盤輸入一些字符,并逐個把它們送到磁盤上去,直到用戶輸入一個“#”為止。用getchar函數(shù)接收從鍵盤逐個輸入的字符用fputc函數(shù)逐個字符寫入磁盤文件。文件的順序讀寫任務(wù)三#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;//定義文件指針變量fpcharch,filename[10];printf("請輸入所用的文件名:");scanf("%s",filename);//輸入相應(yīng)的文件名

getchar();//消化最后輸入的回車符

if((fp=fopen(filename,"w"))==NULL)//打開輸出文件并使fp指向這個文件

{printf("cannotopenfile\n");//如果打開出錯就輸出“打不開”

exit(0);//終止程序

}程序代碼:文件的順序讀寫任務(wù)三printf("請入一個準(zhǔn)備存儲到磁盤的字符串(以#結(jié)束):");ch=getchar();//接收從鍵盤輸入的第一個字符while(ch!='#')//判斷ch的值是否為#,輸入#時結(jié)束循環(huán){fputc(ch,fp);//向磁盤文件輸出一個字符

putchar(ch);//將輸出的字符顯示在屏幕上

ch=getchar();//再接收從鍵盤輸入的一個字符

}fclose(fp);//關(guān)閉文件

putchar(10);//向屏幕輸出一個換行符

return0;}如果文件執(zhí)行是正確的,就執(zhí)行下面的語句:文件的順序讀寫任務(wù)三例:將一個磁盤文件中的信息復(fù)制到另一個磁盤文件中。今要求將上例建立的file1.dat文件中的內(nèi)容復(fù)制到另一個磁盤文件file2.dat中。本程序采用:從file1.dat文件中逐個讀入字符(fgetc函數(shù)),再逐個字符輸出到file2.dat文件中(fputc函數(shù))文件的順序讀寫任務(wù)三#include<stdio.h>#include<stdlib.h>intmain(){FILE*in,*out;//定義指向file類型文件指針變量in和outcharch,infile[10],outfile[10];

//定義兩個字符數(shù)組,分別存放兩個數(shù)據(jù)文件名

printf(“請輸入讀入文件名:");scanf(“%s”,infile);//輸入輸入文件名

printf(“請輸入輸出文件名:");scanf(“%s”,outfile);//輸入輸出文件名

if((in=fopen(infile,“r"))==NULL)//打開輸出文件并使in指向這個文件

{printf("cannotopenfile\n");//如果打開出錯就輸出“打不開”

exit(0);//終止程序

}程序代碼:文件的順序讀寫任務(wù)三

if((in=fopen(outfile,“w"))==NULL)//打開輸出文件并使iout指向這個文件

{printf("cannotopenfile\n");//如果打開出錯就輸出“打不開”

exit(0);//終止程序

}ch=fgetc(in);//從輸入文件讀入一個字符,賦給變量chwhile(!feof(in))//如果未遇到輸入文件的結(jié)束標(biāo)志,就執(zhí)行循環(huán){fputc(ch,out);//將ch寫到輸出文件

putchar(ch);//將ch顯示在屏幕上

ch=fgetc(in);//再從輸入文件讀入一個字符,賦給變量ch

}putchar(10);//向屏幕輸出一個換行符

fclose(in);//關(guān)閉輸入文件

fclose(out);//關(guān)閉輸出文件

return0;}如果文件執(zhí)行是正確的,就執(zhí)行下面的語句:文件的順序讀寫任務(wù)三說明:1、在訪問磁盤文件時,是逐個字符(字節(jié))進(jìn)行的,為了知道當(dāng)前訪問到第幾個字節(jié),系統(tǒng)用“文件讀寫位置標(biāo)記”來表示當(dāng)前所訪問的位置。2、開始時文件讀寫位置標(biāo)記是指向第一個字節(jié)的,每訪問完一個字節(jié)后,當(dāng)前的讀寫位置就會指向下一個字節(jié),也就是當(dāng)前的讀寫位置會自動向下移動。3、為了知道對文件的讀寫是否完成,只需要看文件讀寫位置,是否移動到了文件的末尾。在文件的所有有效字符后,都有一個文件尾標(biāo)志,文件尾標(biāo)志用標(biāo)識符EOF來表示的,

EOF在stdio.h頭文件中被定義為-1.4、用feof函數(shù)檢測是否讀到文件尾,是-函數(shù)返回值1,否-函數(shù)返回值0.文件的順序讀寫任務(wù)三說明:5、如果程序中改用while(ch!=EOF)來判斷是否到達(dá)文件尾也是可以的,程序的運(yùn)行結(jié)果同樣可以在windows資源管理器中用記事本來打開這兩個文件查看。6、這個程序是按照文本文件方式進(jìn)行處理的,也可以用此程序來復(fù)制一個二進(jìn)制的文件,只需要將兩個fopen函數(shù)中的r改成rb,w改成wb即可。7、C系統(tǒng)已經(jīng)在stdio.h這個頭文件當(dāng)中把fputc和fgetc這兩個函數(shù)定義為宏名putc和getc,因此,在程序當(dāng)中使用fputc和putc是一樣的,

fgetc

和getc的作用也是一樣的。stdio.h#defineputc(ch,fp)

fputc(ch,fp)#definegetc(fp)

fgetc(fp)學(xué)習(xí)總結(jié)答一答1、怎樣向文件讀寫字符?任務(wù)三文件的順序讀寫感謝觀看!文件的操作C語言程序設(shè)計任務(wù)驅(qū)動式教程導(dǎo)學(xué)C程序如何從文件中讀寫一個字符串呢??文件的順序讀寫------一個字符串任務(wù)六讀寫一個字符串的函數(shù):2、怎樣向文件讀寫字符串函數(shù)名調(diào)用形式功能返回值fgetsfgets(str,n,fp)從fp指向的文件讀入一個長度為(n-1)的字符串,存放到字符數(shù)組str中讀成功,返回地址str,失敗則返回NULLfputsfputs(str,fp)把str所指向的字符串寫到文件指針變量fp所指向的文件中輸出成功,返回0;否則返回非0值fgets函數(shù)的函數(shù)原型為:char*fgets(char*str,intn,FILE*fp);//從文件讀入一個字符串調(diào)用時可以寫成:fgets(str,n,fp);文件的順序讀寫任務(wù)六讀寫一個字符串的函數(shù):2、怎樣向文件讀寫字符串調(diào)用時可以寫成:fgets(str,n,fp);str:字符數(shù)組n:就是要求得到的字符的個數(shù),實(shí)際上只從fp所指向的文件當(dāng)中讀入n-1個字符,然后在最后去加上一個在\0字符,這樣得到的字符串共有n個字符.文件的順序讀寫任務(wù)三讀寫一個字符串的函數(shù):2、怎樣向文件讀寫字符串函數(shù)名調(diào)用形式功能返回值fgetsfgets(str,n,fp)從fp指向的文件讀入一個長度為(n-1)的字符串,存放到字符數(shù)組str中讀成功,返回地址str,失敗則返回NULLfputsfputs(str,fp)把str所指向的字符串寫到文件指針變量fp所指向的文件中輸出成功,返回0;否則返回非0值fputs函數(shù)的函數(shù)原型為:int*fputs(char*str,FILE*fp);//將str所指向的字符串輸出到fp所指向的文件當(dāng)中調(diào)用時可以寫成:fputs(”China”,fp);文件的順序讀寫任務(wù)六2、怎樣向文件讀寫字符串fgets和fputs:以文件為讀寫對象類似于gets和puts:以終端為讀寫對象文件的順序讀寫任務(wù)三2、怎樣向文件讀寫字符串例:從鍵盤讀入若干個字符串,對它們按字母大小的順序排序,然后把排好序的字符串送到磁盤文件中保存。程序通過三個步驟完成:①從鍵盤讀入n個字符串

②字符串排序

③輸出CHINACANADAINDIA文件的順序讀寫任務(wù)二#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;//定義指向file類型文件指針變量fpcharstr[3][10],temp[10];

//str是用來存放字符串的二維數(shù)組,temp是臨時數(shù)組inti,j,k,n=3;

printf(“Enterstrings:\n”);

//提示輸入字符串

for(i=0;i<n;i++)

gets(str[i]);

//輸入字符串

for(i=0;i<n-1;i++)//用選擇法對字符串排序

{

k=i;

for(j=i+1;j<n;j++)

if((strcmp(str[k],str[j])>0)k=j;

if(k!=i)

{strcpy(temp,str[i]);strcpy(str[i],str[k]);

strcpy(str[k],temp);}}程序代碼:文件的順序讀寫任務(wù)二

if((fp=fopen(“D:\\CC\\string.dat”,“w”))==NULL)//打開磁盤文件

//‘\’為轉(zhuǎn)義字符的標(biāo)志,因此在字符串中要表示’\’用’\\’

{printf("cannotopenfile!\n");//如果打開出錯就輸出“打不開”

exit(0);//終止程序

}

printf(“\nThenewsequence:\n”);for(i=0;i<n;i++){fputs(str[i],fp);fputs(“\n”,fp);

//向磁盤文件寫一個字符串,然后輸出一個換行符。printf(“%s\n”,str[i]);//在屏幕上顯示

}return0;}文件的順序讀寫任務(wù)三例:#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;//定義指向file類型文件指針變量fpcharstr[3][10];

//str是用來存放字符串的二維數(shù)組,temp是臨時數(shù)組inti=0;if((fp=fopen(“D:\\CC\\string.dat”,“r”))==NULL)//打開磁盤文件

//‘\’為轉(zhuǎn)義字符的標(biāo)志,因此在字符串中要表示’\’用’\\’{printf("cannotopenfile!\n");//如果打開出錯就輸出“打不開”

exit(0);//終止程序

}while(fgets(str[i],10,fp)!=NULL)

printf(“%s”,str[i]);

i++;}

fclose(fp);

return0;}文件的順序讀寫

任務(wù)六fprintf函數(shù)和fscanf函數(shù)3、怎樣用格式化的方式讀寫文本文件函數(shù)名讀寫對象作用相識,格式化讀寫函數(shù)fprintf、fscanf文件printf、scanf終端fprintf(文件指針,格式字符串,輸出表列);fscanf(文件指針,格式字符串,輸出表列);文件的順序讀寫

任務(wù)六fprintf(fp,”%d,%6.2f”,i,f);3、怎樣用格式化的方式讀寫文本文件//將int型變量i和float型變量f的值按%d和%6.2f的格式輸出到fp指向的文件中fscanf(fp,”%d,%f”,&i,&f);//磁盤文件上如果有字符”3,4.5”,則從中讀取整數(shù)3送給整型變量i。讀取實(shí)數(shù)4.5送給float型變量f。文件的順序讀寫

任務(wù)六fprintf函數(shù)和fscanf函數(shù)3、怎樣用格式化的方式讀寫文本文件優(yōu)點(diǎn):對磁盤文件讀寫方便,容易理解缺點(diǎn):輸入時,ASCⅡ碼二進(jìn)制形式

輸出時,二進(jìn)制形式AcyⅡ碼注:在內(nèi)存與磁盤頻繁交換數(shù)據(jù)的情況下,最好不用fprintf函數(shù)和fscanf函數(shù),可以使用fread和fwrite函數(shù)來進(jìn)行二進(jìn)制讀寫。文件的順序讀寫

任務(wù)六用二進(jìn)制方式向文件讀寫

——一組數(shù)據(jù)3、怎樣用格式化的方式讀寫文本文件Fread函數(shù):從文件中讀取一個數(shù)據(jù)塊fwrite函數(shù):向文件寫入一個數(shù)據(jù)塊fread(buffer,size,count,fp);

buffer:一個地址.用來存放從文件讀入的數(shù)據(jù)的存儲區(qū)的地址size:要讀寫的字節(jié)數(shù)

count:要讀寫多少個數(shù)據(jù)項fp:file類型指針fwrite(buffer,size,count,fp);把從此地址開始的存儲區(qū)中的數(shù)據(jù)向文件輸出在打開文件時指定用二進(jìn)制文件,這樣就可以用fread和fwrite函數(shù)讀寫任何類型的信息。文件的順序讀寫

任務(wù)六Floatf[10];\\先定義一個包含10個元素的float類型的數(shù)組f。然后用fread(f,4,10,fp);//從fp所指向的文件讀入10個4個字節(jié)的數(shù)據(jù)存儲到數(shù)組f中。fread和fwrite返回值為int類型,執(zhí)行成功返回形參count的值(一個整數(shù)),即輸入/輸出數(shù)據(jù)項的個數(shù)。3、怎樣用格式化的方式讀寫文本文件學(xué)習(xí)總結(jié)答一答1、怎樣向文件讀寫字符?2、什么是文件名?3、什么是緩沖文件系統(tǒng)?4、什么是文件類型指針?任務(wù)三文件的順序讀寫感謝觀看!文件的操作C語言程序設(shè)計任務(wù)驅(qū)動式教程導(dǎo)學(xué)文件的順序讀寫比較容易操作的,但是效率不是很高,那么有沒有什么功效的操作方式呢??

文件的隨機(jī)讀寫任務(wù)四1.文件位置標(biāo)記為了對讀寫進(jìn)行控制,系統(tǒng)為每個文件設(shè)置了一個文件讀寫位置標(biāo)記(簡稱文件位置標(biāo)記或文件標(biāo)記),用來指示“接下來要讀寫的下一個字符的位置”。一、文件位置標(biāo)記及其定位文件的隨機(jī)讀寫任務(wù)四1.文件位置標(biāo)記在對字符文件進(jìn)行順序讀寫時,文件位置標(biāo)記指向文件開頭,這時如果對文件進(jìn)行讀/寫的操作,就讀/寫完第1個字符后,文件位置標(biāo)記順序向后移一個位置,在下一次執(zhí)行讀/寫操作時,就將位置標(biāo)記指向的第2個字符進(jìn)行讀出或?qū)懭搿R来祟愅疲钡接鑫募?,此時文件位置標(biāo)記在最后一個數(shù)據(jù)之后。文件的隨機(jī)讀寫任務(wù)四對流式文件既可以進(jìn)行順序讀寫,也可以進(jìn)行隨機(jī)讀寫。關(guān)鍵在于控制文件的位置標(biāo)記。如果文件位置標(biāo)記是按字節(jié)位置順序移動的,就是順序讀寫。如果能將文件位置標(biāo)記按需要移動到任意位置,就可以實(shí)現(xiàn)隨機(jī)讀寫。1.文件位置標(biāo)記文件的隨機(jī)讀寫任務(wù)四1.文件位置標(biāo)記所謂隨機(jī)讀寫,是指讀寫完上一個字符(字節(jié))后,并不一定要讀寫其后續(xù)的字符(字節(jié)),而可以讀寫文件中任意位置上所需要的字或者是(字節(jié))。即文件讀寫數(shù)據(jù)的順序和數(shù)據(jù)在文件中的物理順序一般是不一致的。可以在任何位置寫入數(shù)據(jù),在任何位置讀取數(shù)據(jù)。文件的隨機(jī)讀寫任務(wù)四2.文件位置標(biāo)記的定位可以強(qiáng)制使文件位置標(biāo)記指向人們指定的位置(1)用rewind函數(shù)使文件位置標(biāo)記指向文件開頭rewind(文件指針);rewind函數(shù)的作用是使文件位置標(biāo)記重新返回文件的開頭,此函數(shù)沒有返回值。例:有一個磁盤文件,內(nèi)有一些信息。要求第1次將它的內(nèi)容顯示在屏幕上,第2次把它復(fù)制到另一文件上。文件的隨機(jī)讀寫任務(wù)四#include<stdio.h>intmain(){FILE*fp1,*fp2;//定義指向file類型文件指針變量charch;

fp1=fopen(“file1.dat”,”r”);

//打開輸入文件

fp2=fopen(“file2.dat”,”w”);//打開輸出文件

ch=getc(fp1);

//從file1.dat文件讀入第一個字符

while(!feof(fp1))//當(dāng)未讀取文件尾標(biāo)志

{

putchar(ch);//在屏幕輸出一個字符

ch=getc(fp1);//再從file1.dat文件讀入一個字符}

putchar(10);//在屏幕執(zhí)行換行

程序代碼:文件的隨機(jī)讀寫任務(wù)四

putchar(10);//在屏幕執(zhí)行換行

rewind(fp1);//使文件位置標(biāo)記返回文件開頭ch=getc(fp1);//從file1.dat文件讀入第一個字符

while(!feof(fp1))//當(dāng)未讀取文件尾標(biāo)志

{

fputc(ch

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論