例题一、把短句 “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! "); exit(0); } fprintf( fp, "%s", "Hello World! " ); /* 写文件 */ if( fclose( fp ) ){ /* 关闭文件 */ printf( "Can not close the file! " ); 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! "); exit(0); } while( !feof(fp) ){ fscanf(fp, "%ld%s%d", &num, stname, &score); printf("%ld %s %d ", num, stname, score); }; if( fclose(fp) ){ /* 关闭文件 */ printf( "Can not close the file! " ); exit(0); } }
if((fp = fopen("f.txt", "r")) == NULL){ printf("File open error! "); 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! " ); 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! " ); return 0; } if(( fp2 = fopen( "f2.txt", "w" )) == NULL) { printf(" File open error! " ); 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! "); exit(0); } if((fp2=fopen("f2.dat", "w")) == NULL){ printf("File open error! "); exit(0); } C语言允许同时打开多个文件 不同的文件对应不同的文件指针 不允许同一个文件在关闭前再次打开