C语言里的写文件
轉(zhuǎn)載自:http://blog.csdn.net/shuimuzhiyuan/article/details/6908335
部分轉(zhuǎn)載自:http://blog.csdn.net/lijun5635/article/details/13095883
一 、fopen()函數(shù)中第一個(gè)形式參數(shù)表示文件名, 可以包含路徑和文件名兩部分。如:
"B:TEST.DAT"
"C:\\TC\\TEST.DAT"
如果將路徑寫成"C:\TC\TEST.DAT"是不正確的, 這一點(diǎn)要特別注意。
第二個(gè)形式參數(shù)表示打開(kāi)文件的類型。關(guān)于文件類型的規(guī)定參見(jiàn)下表。
表 文件操作類型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字符 含義
────────────────────────────
?
| ?文件使用方式 | ??? 含義? |
| "r"(只讀)? | 為輸入打開(kāi)一個(gè)文本文件,不存在則失敗 |
| "w"(只寫) | 為輸出打開(kāi)一個(gè)文本文件,不存在則新建,存在則刪除后再新建 |
| ?"a"(追加) | 向文本文件尾部增加數(shù)據(jù),不存在則創(chuàng)建,存在則追加 |
| 'rb"(只讀)? | 為輸入打開(kāi)一個(gè)二進(jìn)制文件,不存在則失敗 |
| "wb"(只寫)? | 為輸入打開(kāi)一個(gè)二進(jìn)制文件,不存在則新建,存在則刪除后新建 |
| "ab"(追加)? | 向二進(jìn)制文件尾部增加數(shù)據(jù),不存在則創(chuàng)建,存在則追加 |
| "r+"(讀寫)? | 為讀寫打開(kāi)一個(gè)文本文件,不存在則失敗 |
| "w+"?(讀寫) | 為讀寫建立一個(gè)新的文本文件,不存在則新建,存在則刪除后新建 |
| ?"a+"(讀寫) | 為讀寫打開(kāi)一個(gè)文本文件,不存在則創(chuàng)建,存在則追加 |
| "rb+"(讀寫) | 為讀寫打開(kāi)一個(gè)二進(jìn)制文件,不存在則失敗 |
| "wb+"(讀寫) | 為讀寫建立一個(gè)新的二進(jìn)制文件,不存在則新建,存在則刪除后新建 |
| ?"ab+"(讀寫) | 為讀寫打開(kāi)一個(gè)二進(jìn)制文件,不存在則創(chuàng)建,存在則追加 |
?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
如果要打開(kāi)一個(gè)CCDOS子目錄中, 文件名為CLIB的二進(jìn)制文件, 可寫成:
fopen("c:\\ccdos\\clib", "rb");
如果成功的打開(kāi)一個(gè)文件, fopen()函數(shù)返回文件指針, 否則返回空指針 (NULL)。由此可判斷文件打開(kāi)是否成功。
?
二、有關(guān)文件操作的函數(shù)
本節(jié)所講的文件讀寫函數(shù)均是指順序讀寫, 即讀寫了一條信息后, 指針自動(dòng)加1。下面分別介紹寫操作函數(shù)和讀操作函數(shù)。
1. 文件的順序?qū)懞瘮?shù)
fprintf()、fputs()和fputc()函數(shù)
函數(shù)fprintf()、fputs()和fputc()均為文件的順序?qū)懖僮骱瘮?shù), 其調(diào)用格式如下:
int fprintf(FILE *stream, char *format, <variable-list>);
int fputs(char *string, FILE *steam);
int fputc(int ch, FILE *steam);
上述三個(gè)函數(shù)的返回值均為整型量。fprintf() 函數(shù)的返回值為實(shí)際寫入文件中的字罕個(gè)數(shù)(字節(jié)數(shù))。如果寫錯(cuò)誤, 則返回一個(gè)負(fù)數(shù), fputs()函數(shù)返回0時(shí)表明將string指針?biāo)傅淖址畬懭胛募械牟僮鞒晒? 返回非0時(shí), 表明寫操作失敗。fputc()函數(shù)返回一個(gè)向文件所寫字符的值, 此時(shí)寫操作成功, 否則返回EOF(文件結(jié)束結(jié)束其值為-1, 在stdio.h中定義)表示寫操作錯(cuò)誤。
fprintf( ) 函數(shù)中格式化的規(guī)定與printf( ) 函數(shù)相同, 所不同的只是 fprintf()函數(shù)是向文件中寫入。而printf()是向屏幕輸出。
?
#include <stdio.h> #include <stdlib.h>void main() {FILE * fp = NULL ;fp = fopen("text.txt","w");char s[] = "That's good news" ;int i= 89 ;fputs(s,fp );fputc(':',fp);fprintf(fp,"%d\n",i);fputc('a',fp);fclose(fp); }
運(yùn)行結(jié)果為:
?
當(dāng)把 ? ??fp = fopen("text.txt","w"); ? ? ?里的"w"改成"a"時(shí),文件的操作變成追加, 再一次運(yùn)行程序,文件的內(nèi)容為:
總結(jié)
- 上一篇: Python安装工具包踩过的坑
- 下一篇: RetinaNet+focal loss