




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第8章文件【教學目的與要求】1、掌握文件的基本概念;2、學會使用文件的打開、關閉、常用讀寫方法。【教學重點與難點】C文件的打開、關閉、讀寫、定位等函數的功能、格式、調用方法。
主要內容8.1C文件概述8.2文件類型指針8.3文件的打開與關閉8.4文件的讀寫8.5文件的定位8.6出錯的檢測8.7文件輸入輸出小結§8.1C文件概述一、什么是文件存儲在外部儲存設備(如磁盤、光盤、磁帶等)上的一段數據流(或稱信息的有序集合)內存硬盤寫讀大量的數據保存到文件實現永久存儲保存在變量和數組中的數據是暫時的1、從用戶的角度看,文件可分為普通文件和設備文件兩種。二、文件的分類普通文件:
指駐留在外部存儲介質(磁盤或其它存儲介質)上的一個有序數據集,可以是源程序文件、目標文件、可執行程序;也可以是一組待輸入處理的原始數據,或者是程序執行后輸出的一組結果。對于源文件、目標文件、可執行程序可以稱作程序文件,對輸入輸出的數據可稱作數據文件。
設備文件:指與主機相聯的各種外部設備,如顯示器、打印機、鍵盤等。在操作系統中,把外部設備也看作是一個文件來進行管理,把它們的輸入、輸出等同于對磁盤文件的讀和寫。通常把顯示器定義為標準輸出文件,一般情況下在屏幕上顯示有關信息就是向標準輸出文件輸出,如前面經常使用的printf、putchar、puts等輸出函數就是向顯示器輸出。鍵盤通常被指定標準為輸入文件,從鍵盤上輸入就意味著從標準輸入文件上輸入數據。scanf、getchar、gets等函數就使用鍵盤輸入。2、從文件編碼的方式來看,文件可分為ASCII碼文件和二進制碼文件兩種。ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應一個字節,用于存放對應的ASCII碼。例如,一個整數678,對應的數字符是‘6’,‘7’,‘8’,對應的ASCII碼是54(二進行制00110110),55(二進行制00110111),56(二進行制00111000),故678用ASCII文件存放時,共占用3個字節,存放形式為:001101100011011100111000。使用ASCII碼文件,一個字節代表一個字符,便于對字符一一處理和輸出,但占用較多的存儲空間,保存在內存中的所有數據在存入文件的時候都要先轉換為等價的字符形式,并且要花費轉換時間(ASCII碼與二進制之間的轉換),但以ASCII碼形式存儲的文件在DOS操作系統下可以直接閱讀。二進制文件
按二進制的編碼方式來存放文件的。舉例1234整數0000010011010010把值1234的二進制編碼寫入文件中3、從C語言對文件的處理方式由于不同的語言和系統對"緩沖區"的處理方式不同,就產生了兩種不同的文件處理方式。文件處理方式是指系統在進行文件操作時所采用的內部處理方式。從C語言對文件的處理方式來看,可以將文件分為兩類:緩沖文件系統和非緩沖文件系統。緩沖文件系統是指對每個正在使用的文件,系統自動地在內存中為其開辟一個緩沖區。所謂"非緩沖文件系統"是指系統不會自動開辟緩沖區,而要由程序自行設置文件的緩沖區。在ANSIC標準中對文本文件和二進制文件均統一采用緩沖文件系統進行處理。緩沖文件系統系統在內存中開辟一塊緩沖區以便慢速的外設與其成塊地進行數據交換。向磁盤(文件)輸出數據:數據→緩沖區,裝滿緩沖區后→磁盤文件。從磁盤(文件)讀入數據:先一次性從磁盤文件將一批數據輸入到緩沖區,然后再從緩沖區逐個數據讀入到變量。8.2文件類型指針文件指針(指向文件的指針)緩沖文件系統為每個使用的文件在內存中開辟一存儲區存放其相關信息,這些信息用一個結構體變量保存,該結構體類型的名字是FILE。
程序通過FILE類型指針建立和文件的聯系,進行關于文件的一切操作。定義形式:FILE*指針變量名;
舉例:定義了一個結構體FILE類型的指針變量:fp。FILE*fp;用于存放文件的緩沖區首地址,即指向一個文件。在stdio.h文件中有以下的文件類型聲明:typedef
struct{shortlevel;/*緩沖區“滿”或“空”的程度*/
unsignedflags;/*文件狀態標志*/
charfd;/*文件描述符*/
unsignedcharhold;/*如無緩沖區不讀取字符*/
shortbsize;/*緩沖區的大小*/
unsignedchar*buffer;/*數據緩沖區的位置*/unsignedchar*curp;/*指針,當前的指向*/unsignedistemp;/*臨時文件,指示器*/shorttoken;/*用于有效性檢查*/}FILE;8.3文件的打開與關閉一、文件的打開方法:為了打開一個文件,首先要為該文件定義一個文件類型指針;然后用C語言提供的fopen()函數打開文件。fopen函數有兩個參數:“文件名”與“文件使用方式”,它們均是字符串。一般形式:FILE*文件指針名;…文件指針名=fopen("文件名","文件使用方式");其中,“文件指針名”是FILE類型的指針變量;
“文件名”是被打開文件的文件名;
“使用文件方式”是指文件的類型和操作要求。“文件名”是字符串常量或字符串數組。舉例其意義是在當前目錄下打開文件teat.dat,只允許進行“讀”操作,并使fp指向該文件。舉例其功能是打開C盤上子目錄TC里的文件teat.dat,這是一個二進制文件,只允許按二進制方式進行讀操作兩個反斜線“\\”中的第一個表示轉義字符,第二個表示目錄。FILE*fp;fp=(“test.dat","r");FILE*fp;fp=("C:\\TC\\teat.dat","rb");char*mode含義注釋“r”只讀打開文本文件,僅允許從文件讀取數據“w”只寫打開文本文件,僅允許向文件輸出數據“a”追加打開文本文件,僅允許從文件尾部追加數據“rb”只讀打開二進制文件,僅允許從文件讀取數據“wb”只寫打開二進制文件,僅允許向文件輸出數據“ab”追加打開二進制文件,僅允許從文件尾部追加數據“r+”讀寫打開文本文件,允許輸入/輸出數據到文件“w+”讀寫創建新文本文件,允許輸入/輸出數據到文件“a+”讀寫打開文本文件,允許輸入/輸出數據到文件“rb+”讀寫打開二進制文件,允許輸入/輸出數據到文件“wb+”讀寫創建新二進制文件,允許輸入/輸出數據到文件“ab+”讀寫打開二進制文件,允許輸入/輸出數據到文件對于文件使用方式有以下幾點說明:(1)文件使用方式由“r,w,a,t,b,+”這六個字符拼成,各字符的含義是:r(read)表示讀出,w(write)表示寫入,a(append)表示在文件末尾追加,t(text)代表文本文件,可省略不寫,b(binary)代表二進制文件,+表示讀和寫。(2)凡用“
r”打開一個文件時,該文件必須已經存在,且只能從該文件讀出。(3)用“w”打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。(4)若要向一個已存在的文件追加新的信息,只能用“a”方式打開文件。但此時該文件必須是存在的,否則將會出錯。(5)在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應的處理。例如,下列程序段可用來檢查d盤上的一個文件file11.dat是否成功打開,并且進行相應處理:if((fp=fopen("d:\\file11.dat","rb")==NULL){printf("\ncannotopenthefiled:\\file11.dat");exit(0);}這個程序段的作用是:如果返回的指針為非空表示正常打開文件,若為空則表示不能打開d盤上的文件file11.dat文件,打印出錯信息“cannotopenthefiled:\\file11.dat”,然后執行exit(0)退出程序。標準輸入文件(鍵盤),標準輸出文件(顯示器),標準出錯輸出(出錯信息)是由系統打開的,可直接使用。二、文件的關閉方法:使用fclose()函數。一般形式:fclose(文件指針);舉例FILE*fp;…fclose(fp);如果不關閉文件而直接使程序停止運行,這時會丟失緩沖區中還未寫入文件的部分信息
將fp指向的緩沖區中的數據存放到外存儲器的文件中,然后釋放該緩沖區,使文件指針變量不再指向與該文件對應的FILE結構,從而斷開與文件的關聯。操作正常返回0,否則返回EOF(是在stdio.h文件中定義的符號常量,值為-1)。#include<stdio.h>#include<stdlib.h>voidmain(){
FILE*fpFile;
int
nStatus=0;
If(fpFile=fopen("a.txt","w+"))==NULL){
printf(“Openfilefailed!\n”);
exit(0);}fprintf(fpFile,"%s","TestFile");nStatus=fclose(fpFile);printf("%d",nStatus);}【例1】打開名為“a.txt”的文件,并向文件輸出字符串“TestFile”,然后關閉文件,同時在屏幕上輸出fclose的返回值。中斷正在執行的程序讀寫方式用exit函數時加/*定義聲明文件指針*/FILE*fp;/*打開文件*/fp=fopen("文件名","r");/*判斷是否打開文件*/if(fp==NULL){/*當文件打開失敗時的處理*/}/*對文件進行讀寫操作*//*關閉文件*/fclose(fp);文件操作的一般步驟例8-1
以只讀寫方式打開一個名為test.txt的文件,向文件中寫入字符串”cprogram”,然后關閉文件,并判斷文件是否成功打開與關閉。#include<stdio.h>voidmain(){FILE*fp;intk;fp=fopen("test.txt","w+");if(fp==NULL){printf("Fileopenerror\n");exit(0);}
fprintf(fp,”%s”,”cprogram”);k=fclose(fp);if(k==0)printf("OK");elseprintf("Filecloseerror");}8.4文件的讀寫當一個文件打開后,就可以對它進行讀寫操作了。常用的文件讀寫操作函數包括:(1)字符讀寫函數、(2)字符串讀寫函數、(3)格式讀寫函數、(4)數據塊讀寫函數。8.4.1fputc函數和fgetc函數字符讀寫函數是以字符(字節)為單位進行讀寫的文件操作函數。每次可從指定文件中讀出或向指定文件內寫入一個字符。一、字符的讀寫寫字符fputc()函數
fputc(字符量,文件指針);
將一個字符寫到磁盤文件上去返回值:調用成功時返回輸出的字符;失敗時返回EOF。舉例表示向文件指針變量fp指向的文件寫入一個字符’a’。fputc('a',fp);對于fputc函數的使用也要說明幾點:(1)被寫入的文件可以用寫、讀寫、追加方式打開,用寫或讀寫方式打開一個已存在的文件時將清除原有的文件內容,寫入字符是從文件開頭位置開始存放。如需保留原有文件內容,希望寫入的字符從文件末尾開始存放,必須以追加方式打開文件。被寫入的文件若不存在,則創建該文件。(2)每寫入一個字符,文件內部位置指針向后移動一個字節。(3)fputc函數有一個返回值,如寫入成功則返回寫入的字符,否則返回一個寫入失敗標志(EOF)。可用此來判斷寫入是否成功。讀字符:fgetc()函數從指定文件讀入一個字符,該文件必須是以讀或讀寫方式打開。返回值:調用成功時返回讀入的字符;文件結束時返回文件結束符EOF。舉例表示從文件指針變量fp指向的文件中讀出一個字符,賦給字符變量chch=fgetc(fp);對于fgetc函數的使用有以下幾點說明:(1)在fgetc函數調用中,讀取的文件必須是以讀或讀寫方式打開的。(2)在文件內部有一個位置指針,用來指向文件的當前讀寫字節。在文件打開時,該指針總是指向文件的第一個字節。使用fgetc
函數后,該位置指針將向后移動一個字節。因此可連續多次使用fgetc函數,讀取多個字符。應注意文件指針和文件內部的位置指針不是一回事。文件指針是指向整個文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內部的位置指針用以指示文件內部的當前讀寫位置,每讀寫一次,該指針均向后移動,它不需在程序中定義說明,而是由系統自動設置的。例8-2
從鍵盤輸入一行字符,寫入到d盤上的文件test.txt中,再把該文件中的字符讀出在屏幕上依次顯示出來。#include<stdio.h>voidmain(){ FILE*fp;charch;
if((fp=fopen("d:\\test.txt","w+"))==NULL)//以讀寫方式打開文件 { printf("Cannotopenthefile,exit!"); exit(1); }
printf("輸入一行字符,按回車鍵結束:\n");
ch=getchar(); while(ch!='\n') { fputc(ch,fp);//
字符逐個寫入文件中
ch=getchar(); }
rewind(fp);//
文件讀寫指針復位,移到文件開頭ch=fgetc(fp);//
從文件讀出字符并賦值給變量ch
while(ch!=EOF) { putchar(ch);
ch=fgetc(fp); }
putchar(‘\n’);
fclose(fp);}運行程序,輸入一行字符:wearestudent屏幕輸出相同的字符串:wearestudent8.4.2讀寫字符串函數fgets和fputs1、fgets()函數 格式:fgets(字符數組名,n,文件指針);
從文件指針指向的文件讀取n-1個字符并把它們放到指定字符數組中。如果在讀入n-1個字符完成之前遇到換行符‘\n’或文件結束符EOF則結束讀取,在讀取的字符串之后自動加一個字符串結束字符‘\0’。返回值:字符數組的地址。舉例從fp所指的文件中讀出n-1個字符送入字符數組str中。fgets(str,n,fp);例8-3
調用fgets函數從d盤上的文件test.txt中讀出一個含14個字符的字符串到字符數組str中。#include<stdio.h>voidmain(){ FILE*fp; charstr[15];
if((fp=fopen("d:\\test.txt","r")==NULL)) {printf("\nCannotopenfilestrikeanykeyexit!"); exit(1); }
fgets(str,15,fp);
printf("\n%s\n",str);
fclose(fp);}在上例中d盤上的文件test.txt文件寫入了一行字符“wearestudent”,運行程序,打開文件后,從文件中讀出14個字符送入字符數組str中保存,并自動在數組最后一個單元內將加上'\0',然后在屏幕上顯示輸出str數組,即在屏幕上顯示“wearestudent”。2、fputs()函數
fputs(字符數組名,文件指針);
向指定的文件輸出一個字符串,‘\0’結束符不輸出。其中字符串可以是字符串常量、字符數組名或指針變量。返回值:調用成功時,返回0;否則返回EOF。舉例表示把字符數組str中的字符串寫入fp所指的文件之中。fputs(“str”,fp);函數調用形式例8-4在建立的文件"d:\\test.txt"中追加一個字符串str2,并顯示文件中的全部內容。#include<stdio.h>voidmain(){FILE*fp;charstr2[20],ch;
printf("inputastring:\n");gets(str2);
if((fp=fopen("d:\\test.txt","a+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");
getchar();exit(0);}fputs(str2,fp);rewind(fp);ch=fgetc(fp);while(ch!=EOF){putchar(ch);
ch=fgetc(fp);}printf("\n");fclose(fp);}本例要求在test.txt文件末加寫字符串,因此,在程序中以追加讀寫文本文件的方式打開文件test.txt,然后輸入字符串,并用fputs函數把該串寫入文件test.txt。在讀出文件中的字符前用rewind函數把文件內部位置指針移到文件首,再進入循環逐個顯示當前文件中的全部內容。例8-5
從上例中建立的文件test.txt中讀出字符串,再寫入另一個文件test2.txt中,同時顯示在屏幕上。#include<stdio.h>#include<string.h>voidmain(){FILE*fp1,*fp2;charstr[100];if((fp1=fopen("d:\\test.txt","r"))==NULL){printf("cannotopenfile\n");exit(0);}if((fp2=fopen("test2.txt","w"))==NULL){printf("cannotopenfile\n");exit(0);}fgets(str,50,fp1);
if((strlen(str))>0)//從文件中讀回的字符串長度大于0{fputs(str,fp2);//把字符串并寫入文件2
puts(str);//在屏幕顯示}fclose(fp1);fclose(fp2);}程序共操作兩個文件,需定義兩個文件變量指針,因此在操作文件之前,應將兩個文件以需要的工作方式同時打開(不分先后),讀寫完成后,再關閉文件。8.4.3格式化讀寫函數fscanf和fprinf1格式化讀fscanf()函數
fscanf(文件指針,”格式控制字符串”,地址表列);
從fp指向的ASCII文件中讀取字符,按格式控制符的含義存入對應的輸入表列變量中,返回值為輸入數據的個數。舉例表示從fp指向的文件中讀出兩個整數賦給a,bint
a,bfscanf(fp,%d%d",&a,&b);2格式化寫fprintf()函數
fprintf(文件指針,”格式控制字符串”,輸出表列);
將輸出表列中的數據,按指定格式控制符的說明,寫入fp指向的ASCII文件中,返回值為寫入文件的數據實際個數。舉例將x,y的值寫入fp指向的文件。Floatx=2.5,y=567.89fprintf(fp,"%f%f",x,y);例8-7調用scanf函數從指定文件test.dat中讀出數據。#include<stdio.h>main(){char*s;floatx;FILE*fp;fp=fopen("test.dat","r");/*只讀方式打開文字本件*/fgets(s,24,fp);/*從文件中讀取23個字符*/printf("%s",s);/*輸出所讀的字符串*/fscanf(fp,"%f",&x);/*讀取單精度實型數*/printf("%f",x);/*輸出所讀實型數*/fclose(fp);/*關閉文件*/getch();/*暫停,任一鍵繼續*/}運行后屏幕顯示:ThescoreofCprogram:85.500000說明:fscanf(fp,"%s",s)和fgets(s,24,fp)函數都能讀入字符串,但是fscanf()函數讀到空白符時,便自動結束,在使用時要特別注意。8.4.4數據塊讀寫函數fread和fwritefscanf()函數和fprintf()函數對磁盤文件讀寫,使用方便,易理解。但輸入輸出需要轉化。因此,在內存與磁盤頻繁交換數據的情況下,最好用fread()和fwrite()函數。fread(內存地址,數據項字節數,數據項個數,文件指針);fwrite(內存地址,數據項字節數,數據項個數,文件指針);通常用于對二進制文件的讀寫操作。舉例表示從已打開的一個文件中讀入5個整數,依次送入整型數組a中。inta[5];fread(a,sizeof(int),5,fp);例8-8調用fwrite函數寫入10個整數到數據文件data.dat中#include<stdio.h>intmain(){FILE*fp;inti,array[10];if((fp=fopen("d:\\data.dat","wb"))==NULL){printf("Openfilefailed!\n");
exit(0);}for(i=0;i<10;i++)
scanf("%d",&array[i]);fwrite(array,sizeof(int),10,fp);fclose(fp);return0;}程序運行輸入:11121314151617181920程序運行的結果:把輸入的10個整數寫入到文件data.dat中例8-9調用fread函數從文件data.dat中讀出10個整數到保存在指定數組中,并在屏幕上顯示。#include<stdio.h>intmain(){FILE*fp;intarray[10];inti;if((fp=fopen("d:\\data.dat","rb"))==NULL){printf("Openfilefailed!\n");exit(0);}fread(array,sizeof(int),10,fp);
for(i=0;i<10;i++)printf("%4d",array[i]);
fclose(fp);return0;}程序運行結果:11121314151617181920例8-10
從鍵盤輸入三個學生數據,寫入一個文件中,再讀出這三個學生的數據顯示在屏幕上。#include<stdio.h>structstu{charname[10];intnum;intage;charaddr[15];};main(){structstuboya[3],boyb[3],*pp,*qq;FILE*fp;charch;inti;if((fp=fopen("d:\\stu_list","wb+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");exit(0);
}printf("\ninputstudent’sdata\n");for(i=0;i<3;i++)scanf("%s%d%d%s",boya[i].name,&boya[i].num,&boya[i].age,boya[i].addr);fwrite(boya,sizeof(structstu),3,fp);rewind(fp);fread(boyb,sizeof(structstu),3,fp);printf("\nnamenumberageaddr\n");for(i=0;i<3;i++)printf("%s%6d%6d%s\n",boyb[i].name,boyb[i].num,boyb[i].age,boyb[i].addr);fclose(fp);}
本例題程序定義了一個結構體類型stu,說明了兩個結構數組boya和boyb,以讀寫方式打開二進制文件“stu_list”,從鍵盤輸入三個學生數據到數組boya中,然后寫入該文件中,再通過定位函數把文件內部位置指針移到文件首,讀出三個學生數據后存入指定數組boyb,并在屏幕上顯示。#include<stdio.h>#include<stdlib.h>structstud{charname[20]; intage; charnum[20];}s[5],t;voidmain(){ FILE*fp; inti=0;if((fp=fopen("d:\\stud.dat","wb"))==NULL){ printf("Erroropeningfiled:\\stud.dat\n"); exit(1);}while(i<5){ printf("inputname:");scanf("%s",s[i].name);printf("inputage:");scanf("%d",&s[i].age); printf("inputnumber:"); scanf("%s",&s[i].num); i++;}【例5】輸入5個學生數據到文件d:\stud.dat中,然后從文件中把數據讀出來并顯示。只寫(二進制文件)輸入5個學生數據if(fwrite(s,sizeof(structstud),5,fp)!=5){ printf("Errorwritingfiled:\\stud.dat\n"); exit(1);}fclose(fp);if((fp=fopen("d:\\stud.dat","rb"))==NULL){ printf("Erroropeningfiled:\\stud.dat\n"); exit(1);}i=0;將5個學生數據寫入二進制文件while(!feof(fp)){ if(fread(&t,sizeof(structstud),1,fp)!=1) {printf("Errorreadingfiled:\\stud.dat\n"); exit(1);} i++; printf("the%dthstudent:",i); printf("name:%s",); printf("age:%d",t.age); printf("number:%s\n",t.num);}fclose(fp);}只讀(二進制文件)從二進制文件讀出5個學生數據8.5文件的定位文件內部的位置按要求移動位置指針,是實現隨機讀寫的關鍵。rewind()函數
rewind(文件指針);使位置指針重新返回到文件的開頭,函數無返回值。例如:rewind(fp);/*fp是指向一個打開的文件*/ftell()函數
ftell(文件類型指針);得到當前文件指針位置。返回值:調用成功時,返回longint數值,表示文件指針位置;出錯返回-1。feof函數函數原型:intfeof(FILE*fp);調用格式:feof(文件指針);功能:判斷文件是否處于文件結束位置,如文件結束,則返回值為1,否則為0。文件內部的位置fseek()函數
fseek(文件指針,位移量,起始點);改變文件的位置指針。其中,文件指針:是文件打開時返回的文件指針。位移量:是指以起始點為基點,向前向后移動的字節數,可以為負值。大多數C語言版本要求位移量為long型數。起始點:表示從何處開始計算位移量,規定的起始點有:返回值:操作成功返回0,否則返回非0。起始點名字數字代號文件開始SEEK_SET0當前位置SEEK_CUR1文件末尾SEEK_END2例如:fseek(fp,20L,0);/*把位置指針從文件開頭向前移動20個字節*/fseek(fp,50L,1);/*將位置指針移到離當前位置50個字節處*/fseek(fp,-10L,2);/*將位置指針從文件末尾處往回退10個字節說明:fseek函數一般用于二進制文件。在文本文件中由于要進行轉換,故往往計算的位置會出現錯誤。文件的隨機讀寫在移動位置指針之后,即可用前面介紹的任一種讀寫函數進行讀寫,由于一般是讀寫一個數據塊,因此常用fread和fwrite函數。例8-11利用例8-10建立的文件stu_list,從中讀出第二條學生數據。#include<stdio.h>structstu{charname[10];intnum;intage;charaddr[15];};voidmain(){FILE*fp;structstuboy,*p;charch;inti=1;p=&boy;if((fp=fopen("d:\\stu_list","rb"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}rewind(fp);fseek(fp,i*sizeof(structstu),0);fread(p,sizeof(structstu),1,fp);printf("\n\nname\tnumberageaddr\n");printf("%s\t%5d%7d%s\n",p->name,p->num,p->age,p->addr);}文件stu_list已由例8-9的程序建立,本程序用隨機讀出的方法讀出第二個學生的數據。程序中定義boy為stu類型變量,p為指向boy的指針。以讀二進制文件方式打開文件,程序調用rewind(fp)把位置指針復位到文件開頭,又調用fseek函數移動文件位置指針。其中起始點為0,表示從文件頭開始,i值為1表示移動一個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論