程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言文件輸入輸出函數筆記

C語言文件輸入輸出函數筆記

編輯:關於C語言

 

   發現最近寫的程序總是要用到文件操作,所以把C語言與文件輸入輸出有關的函數復習一下。

 

   C語言是通過將一個文件類型指針與文件關聯起來來對文件進行打開、關閉、輸入、輸出。

文件類型為FILE(實際上是一個結構體)。定義一個文件指針為FILE *fp;就可以將fp和某個文件關聯起來進行操作了。例如要打開一個文件:

                                                FILE *fp;

                                                            fp=fopen("filename",“打開方式”);//fopen的返回值為NULL或指向文件的指針

                                          或者直接FILE *fp=("filename","打開方式");

如果要重定向只需將指針fp和另一個文件關聯。意思是可用一個文件指針操作多個文件。

文件使用完後要及時關閉。這是個好習慣。關閉函數為fclose(fp);這樣fp就不在和之前指向的文件關聯了。

 

1.判斷文件是否打開成功: www.2cto.com

    判斷文件是否打開成功可用fopen的返回值if((fp=fopen("filename","r"))==NULL)則打開失敗。

 

2.判斷文件是否結束:

判斷ASCII文件是否結束fgetc()會返回結束標志EOF(即-1)由於二進制文件數據會出現-1所以必須用函數feof(fp)判斷,feof(fp)==1則已結束。

 

3.單個字符的輸入輸出:fgetc()和fputc()

ch=fgetc(fp);fp為文件指針,且fgetc()不會忽略空格和回車符,只能用於讀入字符。

相應的fputc(ch,fp);向文件輸出字符時也不會忽略空格,回車符

因為fgetc()返回字符所以fgetc()和fputc()通常嵌套使用:fputc(fgetc(in),out)。

 

fputc()的返回值為輸入的字符或EOF(-1)(失敗的情況下)

fgetc()的返回值為讀入的字符(包括文件結束標志EOF(-1))

 

4.數據塊的輸入輸出:fread(buff,size,count,fp)和發fwrite(buffer,size,count,fp)

buffer是一個指針,對於fread,它是讀入數據的存放地址,對於發fwrite它是要輸出數據的地址,

size是指要讀寫的字節數,count是要進行讀寫多少個size字節的數據項。

 

如果成功fread和fwrite都返回成功輸入和讀取的數據塊個數有可能比count小;

 

注意:fread參數buffer指向的空間必須大於或等於要讀入的數據塊大小。

         fread和fwrite一般用於二進制文件的輸入輸出。用於ASCII文件字符發生轉換的情況下可能出現與原設想的情況不同。

 

5.putw()和getw()用來對磁盤文件讀寫一個整數。

例如putw(10,fp);//返回值為輸出的數字(int)

int i=getw(fp);//失敗則返回-1

但注意putw()和getw()都是按二進制輸入輸出的。

所以如果你用putw()輸入數據到文件後以文本的方式打開看到的將都是亂碼。

同樣如果你在文本文件中輸入了數字並保存,用getw()來讀入的話讀入的結果並不是你想象的那樣。因為它是按二進制讀的

 

摘自 shimachao的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved