C_language_renew09

文件

  • 文件分兩類:文本文件、二進制文件

  • 文本文件:是基于字符編碼的文件常見的編碼有ASCII。以ASCII格式存放,一個字節(jié)存放一個字符。
    1000 0x2710 31303030 用文本工具打開時 10000 itoa atoi
    1000 0x2710 0x2710 用文本工具打開時10變成16的ASCII不可見

  • 二進制文件:基于值編碼的文件。以值(補碼)編碼格式存放。是把數(shù)據(jù)以二進制數(shù)的格式存放在文件中。
    數(shù)據(jù)按其內(nèi)存中的存儲形式原樣存放。

緩沖區(qū)

可以通過FCLOSE(fp)和fflush(fp)

文件打開方式:

“r”  讀取  存在的文件
“r+” 寫入
“w”  寫入   創(chuàng)建或覆蓋文件
“w+” 讀取
“a”  追加  創(chuàng)建或覆蓋原文件后追加
“a+” 讀取

文件讀寫操作

fgetc  fputc 讀寫一個的字符  文件結(jié)尾標志EOF  -1

int fputc(int ch,FILE *stream);
寫入成功,返回寫入成功字符,如果失敗,返回EOF

int fgetc(FILE *stream);
正常,返回讀取的字符;讀到文件尾或出錯時,為EOF

所有對文件的讀,盡量少用int  feof (FILE*fp);到達文件結(jié)尾返回真1,未到達文件結(jié)尾返回假0。

key:feof()此函數(shù)慎用

  while(ret = fegtc(fp)  && !feof(fp))
  { 
            printf("ret = %c\n",ret); 
  }

  int *fputs(char *str,FILE *fp)
  把str指向的字符串寫入fp指向的文件中。
    返回值  正常為0,出錯返回EOF

  char *fgets(char *str,int length,FILE *fp)
  fputs();fgets();讀寫 一行的字符
  fgets(buf,len,fp);最多讀len -1個字符,中途遇到‘\n’(會被讀?。?..EOF結(jié)束本次讀取后,在每讀一行后,自動追加 ‘\0’
   1、讀n-1 個字符前遇到\n,讀取結(jié)束
   2、讀n-1個字符前遇到EOF,讀取結(jié)束
  返回值:正常返回strz指針;出錯或遇到文件結(jié)尾,返空指針NULL

hexdump  -C aa.c         以十六進制查看a.out
hexdump  -C
Linux下每個文件的末尾都自動加上‘\n’,WINDOWS不會自動加上。
能用文件相關(guān)函數(shù)來表示讀到文件結(jié)尾的,不要用feof這個函數(shù)。
特別注意:
  文本文件的重要標志'\0'  '\n'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 廣義上的二進制文件包括文本文件,這里討論的是狹義上的二進制文件與文本文件的比較: 1. 能存儲的數(shù)據(jù)類型不同 文本...
    時待吾閱讀 12,066評論 2 28
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,241評論 2 33
  • 今天來講講褲子:今季的褲子褲腳都是破破爛爛,參差不齊,我沒次向大家推薦時,多數(shù)客人都拒絕,但是,你看看以下內(nèi)容,就...
    Miniplus閱讀 217評論 0 0
  • 類Object是類層次結(jié)構(gòu)的根類(相當(dāng)于OC的NSObject).每個類都使用其作為超類.所有的對象都實現(xiàn)這個類的方法
    Jonath閱讀 870評論 0 0
  • 20170706周四起,12日完 1《世說新語精讀》4分之一 + 世說新語的思想與藝術(shù)價值;第二章:英雄與名士2頁...
    小修1981閱讀 1,389評論 0 0

友情鏈接更多精彩內(nèi)容