【c根底】之 文件及其操作。本站提示廣大學習愛好者:(【c根底】之 文件及其操作)文章只能為提供參考,不一定能成為您想要的結果。以下是【c根底】之 文件及其操作正文
首先要定義一個文件指針類型,格式為 FILE *文件指針名; ;
FILE *fp; //fp就是定義的文件指針
●翻開文件fopen()函數,格式: fp = fopen("文件名", "翻開方式");
fp = fopen("c:\\myfile", "r"); //翻開方式下文會講到
文件名中不允許直接運用途徑描繪符 "\",必需用本義字符的方式 "\\"。"\\" 中第一個 "\" 是本義字符,第二個表示途徑描繪符。
●封閉文件fcolse()函數,格式: fclose(文件指針);
fclose(fp);
功用:正常完成封閉文件操作時fclose前往0,否則前往EOF(值為-1),表示有錯誤發作。
●翻開文件的方式:
共有12種,由r(read), w(write), a(append), b(binary), +(read/write)五個字符組合而成。
"r", "w", "a", "r+", "w+", "a+" :這六種翻開文本文件
"rb", "wb", "ab", "rb+", "wb+", "ab+" :這六種翻開二進制文件
"r" 翻開一個文本文件,可以讀取文件 "w" 翻開一個文本文件,可以寫入文件,先將文件的長度截為0。假如該文件不存在則先創立 "a" 翻開一個文本文件,可以寫入文件,向已有文件的尾部追加內容,假如該文件不存在則先創立 "r+" 翻開一個文本文件,可以停止更新(讀取和寫入),也即可以讀取和寫入文件 "w+" 翻開一個文本文件,可以停止更新(讀取和寫入),假如該文件存在則首先將其長度截為0,假如該文件不存在則先創立 "a+" 翻開一個文本文件,可以停止更新(讀取和寫入),向已有文件的尾部追加內容,假如該文件不存在則先創立;可以讀取整個文件,但寫入時只能追加內容。 "rb", "wb", "ab", "rb+", "wb+", "ab+", "r+b", "w+b", "a+b" 與後面的形式類似,只是運用二進制而非文本形式翻開文件留意:假如用"w"形式翻開恣意一個文件,文件內容將刪除,以便順序以一個空文件開端操作。
●文件完畢的斷定feof()函數,格式: feof(文件指針)
這裡舉一個例子協助了解:
while(!feof(fp)) //我們已在文件的末尾加上完畢標志-1 { c = fgetc(fp); print("當到文件尾時,此段文字不顯示"); } //此段順序的含義是:當為!feof(fp)為1,從以後地位讀入一個字節的數據賦給字符型變量c,指當遇到文件完畢標志時,feof(fp)的值為1,feof(fp)為0,循環完畢
feof()函數功用:測試文件指針所指向的文錦啊外部讀寫地位指針能否抵達文件尾。當文件完畢時前往1,否則前往0。
文件的讀寫 1.字符,字符串的讀寫寫字符函數fputc,功用:把一個字符寫入此盤文件中,若輸入成功,則前往輸入的字符,否則前往EOF。格式:
fputc(ch, fp); //將字符ch的值輸入到fp所指向的文件中
ch:要輸入的字符,可以是字符常量,也可以是字符變量。
讀字符函數fgetc,功用:從指定文件讀入一個字符,該文件必需是以讀或讀寫方式翻開的,若讀取成功前往讀取的字符,否則前往EOF。格式:
ch = fgetc(fp); //讀取成功前往字符賦值給ch
寫字符串函數fputs,格式: fputs("字符串", 文件指針); 功用:向指定的文件寫入一串字符,寫入成功前往0,否則前往非0值。
fputs("Welcome to my blog", fp);
留意:fputs函數將寫入文件的字符串中的空字符去掉,ptus函數將空字符換成換行字符輸入。
讀字符串函數,格式: fgets(字符串, n, fp); 功用:從fp指向的文件讀入n-1個字符寄存第一個參數中,假如遇到換行符或EOF,則完畢。
fgets(str, n, fp); //str 為字符數組。從fp指向的文件讀入n-1個字符寄存到str數組中
留意:讀入字符串後在最後加一個 '\0' 字符,fgets函數前往的前往值為字符串的首地址。
2.數據塊的讀寫
數據塊寫文件函數fwrite(),格式:
fwrite(buffer, size, count, fp);
buffer:是一個指針,用來指出帶輸入數據的地址。
size:每主要寫的字節數
count:寫入多少個size大小的數據項
留意:完成寫操作(fwrite())後必需封閉文件(fclose())
數據塊的讀文件函數fread(),格式:
fread(buffer, size, count, fp);
count:讀入多少個size大小的數據項
3.格式化讀/寫文件函數
讀文件fprintf(),格式: fprintf(文件指針,"格式控制",輸入列表);
fprintf(fp,"%d, %d",a, b); //將a,b寫入fp指向的文件中
留意:fprintf()函數總是將輸入項在內存中的表示方式按指定的格式轉換成字符串方式,再寫入到指定的文件中。
寫文件fscanf(),格式: fscanf(文件指針,"格式控制",地址列表);
fprintf(fp,"%d, %d",&a, &b); //將fp指向的文件中的數據讀出並寄存於a,b
留意:fscanf()函數從文件中讀出的數據一定是按字符串方式(文本方式)存在的。
文件定位 ●rewind()函數,格式: rewind(文件指針); 功用:使文件指針的讀寫地位重新前往到文件的掃尾。
rewind(fp);●fseek()函數,格式: fseek(文件指針, 位移量w, 起始點s); 功用:使文件指針移到距起始點偏移w個字節處。
fseek(fp, 2, 0); //使文件指針移到距起始點0偏移2個字節數w:當w為負數時表示向文件尾方向挪動,為正數時表示向文件頭挪動,為0表示不挪動。 s:可以為0,1,2;s=0表示文件頭,s=0表示以後地位,s=0表示文件末尾。 ●ftell()函數,格式: ftell(文件指針); 功用:失掉流式文件中的以後地位,用絕對與文件掃尾的位移量來表示。若ftell()函數前往-1L表示出錯。
i = ftell(fp); //寄存以後地位給變量i if(i == -1L) printf("error\n"); //若調用的函數出錯(如不存在此文件),則輸入ERROR文件的檢測 常用的文件檢測函數有兩個 ferror()和clearerr() ferror()函數,功用:若ferror()函數的前往值為0,則表示未出錯,非0表示出錯。格式:
ferror(fp)
clearerr(fp)
20170104完