文件
- 文件分兩類:文本文件杀狡、二進制文件
- 文本文件:是基于字符編碼的文件常見的編碼有ASCII蒙畴。以ASCII格式存放,一個字節(jié)存放一個字符呜象。
1000 0x2710 31303030 用文本工具打開時 10000 itoa atoi
1000 0x2710 0x2710 用文本工具打開時10變成16的ASCII不可見
- 二進制文件:基于值編碼的文件忍抽。以值(補碼)編碼格式存放。是把數據以二進制數的格式存放在文件中董朝。
數據按其內存中的存儲形式原樣存放鸠项。
緩沖區(qū)
可以通過FCLOSE(fp)和fflush(fp)
文件打開方式:
“r” 讀取 存在的文件
“r+” 寫入
“w” 寫入 創(chuàng)建或覆蓋文件
“w+” 讀取
“a” 追加 創(chuàng)建或覆蓋原文件后追加
“a+” 讀取
文件讀寫操作
fgetc fputc 讀寫一個的字符 文件結尾標志EOF -1
int fputc(int ch,FILE *stream);
寫入成功,返回寫入成功字符子姜,如果失敗祟绊,返回EOF
int fgetc(FILE *stream);
正常,返回讀取的字符哥捕;讀到文件尾或出錯時牧抽,為EOF
所有對文件的讀,盡量少用int feof (FILE*fp);到達文件結尾返回真1遥赚,未到達文件結尾返回假0扬舒。
key:feof()此函數慎用
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結束本次讀取后愧薛,在每讀一行后晨炕,自動追加 ‘\0’
1、讀n-1 個字符前遇到\n,讀取結束
2毫炉、讀n-1個字符前遇到EOF瓮栗,讀取結束
返回值:正常返回strz指針;出錯或遇到文件結尾瞄勾,返空指針NULL
hexdump -C aa.c 以十六進制查看a.out
hexdump -C
Linux下每個文件的末尾都自動加上‘\n’费奸,WINDOWS不會自動加上。
能用文件相關函數來表示讀到文件結尾的进陡,不要用feof這個函數愿阐。
特別注意:
文本文件的重要標志'\0' '\n'