例題一、把短句 “Hello World!” 保存到磁盤文件f1.txt中。
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; /* 定義文件指針*/ if( ( fp = fopen("f1.txt", "w") ) == NULL){ /* 打開文件 */ printf("File open error!\n"); exit(0); } fprintf( fp, "%s", "Hello World! " ); /* 寫文件 */ if( fclose( fp ) ){ /* 關閉文件 */ printf( "Can not close the file!\n" ); exit(0); } return 0; }
用文件指針指示文件緩沖區中具體讀寫的位置
FILE *fp;
自定義類型(typedef):
1、將C語言中的已有類型(包括已定義過的自定義類型)重新命名
2、新的名稱可以代替已有數據類型
3、常用於簡化對復雜數據類型定義的描述
typedef <已有類型名> <新類型名>;
typedef int INTEGER; int i, j; <====> INTEGER i, j; typedef int* POINT; int* p1; <====> POINT p1;
自定義類型(typedef)的使用方法
1、定義變量 int i
2、變量名新類型名 int INTEGER
3、加上 typedef typedef int INTEGER
4、用新類型名定義變量 INTEGER i;
int NUM[10]
typedef int NUM[10]
NUM a <===> int a[10]
例題二
已知一個數據文件f.txt中保存了5個學生的計算機等級考試成績,包括學號、姓名和分數,文件內容如下,請將文件的內容讀出並顯示到屏幕中。
301101 張文 91
301102 陳慧 85
301103 王衛東 76
301104 鄭偉 69
301105 郭溫濤 55
#include "stdio.h" int main(void) { FILE * fp; /* 定義文件指針*/ long num; char stname[20]; int score; if((fp = fopen("f.txt", "r")) == NULL){ /* 打開文件 */ printf("File open error!\n"); exit(0); } while( !feof(fp) ){ fscanf(fp, "%ld%s%d", &num, stname, &score); printf("%ld %s %d\n", num, stname, score); }; if( fclose(fp) ){ /* 關閉文件 */ printf( "Can not close the file!\n" ); exit(0); } }
if((fp = fopen("f.txt", "r")) == NULL){ printf("File open error!\n"); exit(0); } fopen("文件名","文件打開方式") 函數fopen() 的返回值 1、執行成功,則返回包含文件緩沖區等信息的FILE型地址,賦給文件指針fp 2、不成功,則返回一個NULL(空值) exit(0):關閉所有打開的文件,並終止程序的執行 參數0表示程序正常結束;非0參數通常表示不正常的程序結束
fp = fopen("f.txt", "r")文件打開方式參數表

文件讀寫與打開方式
if 讀文件 指定的文件必須存在,否則出錯; if 寫文件(指定的文件可以存在,也可以不存在) if 以 "w" 方式寫 if 該文件已經存在 原文件將被刪去重新建立; else 按指定的名字新建一個文件; else if 以 "a" 方式寫 if 該文件已經存在 寫入的數據將被添加到指定文件原有數據的后面,不會刪去原來的內容; else 按指定的名字新建一個文件(與“w”相同); if 文件同時讀和寫 使用 "r+"、"w+" 或 "a+" 打開文件
關閉文件
if( fclose(fp) ){ printf( "Can not close the file!\n" ); exit(0); } fclose(文件指針) 把緩沖區中的數據寫入磁盤扇區,確保寫文件的正常完成 釋放文件緩沖區單元和FILE結構體,使文件指針與具體文件脫鈎。 函數fclose() 的返回值 返回0:正常關閉文件 返回非0:無法正常關閉文件
文件復制
已知一個文本數據文件f1.txt,請將該文件復制一份,保存為f2.txt。
新建一個文本文件f1.txt,將該文件與源程序放在同一目錄下,執行程序,觀察結果。
#include <stdio.h> int main(void) { FILE *fp1,*fp2; char c; if(( fp1 = fopen( "f1.txt", "r" )) == NULL) { printf(" File open error!\n" ); return 0; } if(( fp2 = fopen( "f2.txt", "w" )) == NULL) { printf(" File open error!\n" ); return 0; } while( !feof( fp1 ) ){ c = fgetc( fp1 ); fputc(c, fp2); } fclose( fp1 ); fclose( fp2 ); return 0; }
打開多個文件
if((fp1 = fopen(f1.dat, "r")) == NULL){ printf("File open error!\n"); exit(0); } if((fp2=fopen("f2.dat", "w")) == NULL){ printf("File open error!\n"); exit(0); } C語言允許同時打開多個文件 不同的文件對應不同的文件指針 不允許同一個文件在關閉前再次打開
