[C语言中关于文件操作
C语言中关于文件操作
C语言中的文件??? C语言把文件看作一个字节的序列??? C语言对文件的存取是以字节为单位的文本文件(ASCII文件)??? 按数据的ASCII形式存储二进制文件??? 按数据在内存中的二进制形式存储
?
文本文件和二进制文件
?
?
?
缓冲文件系统
?
?
文件类型指针
??? FILE类型??? 保存被使用的文件的有关信息??? 所有的文件操作都需要FILE类型的指针??? FILE是库文件中定义的结构体的别名??? 注意不要写成struct FILE??? 举例 FILE *fp;
?
FILE类型typedef struct {?? short????????? level;? /*缓冲区满空程度*/?? unsigned?????? flags;? /*文件状态标志*/?? char?????????? fd;???? /*文件描述符*/?? unsigned char? hold;?? /*无缓冲则不读取字符*/?? short????????? bsize;? /*缓冲区大小*/?? unsigned char *buffer; /*数据缓冲区*/?? unsigned char *curp;?? /*当前位置指针*/?? unsigned?????? istemp; /*临时文件指示器*/?? short????????? token;? /*用于有效性检查*/} FILE;
?
文件的打开 (fopen函数)函数原型FILE *fopen(char *filename, char *mode);参数说明? filename: 要打开的文件路径? mode: 打开模式
返回值? 若成功,返回指向被打开文件的指针? 若出错,返回空指针NULL(0)
?
打开模式???????? 描???述? r?????????? 只读,打开已有文件,不能写? w?????????? 只写,创建或打开,覆盖已有文件? a????????? ?追加,创建或打开,在已有文件末尾追加? r+???????? ?读写,打开已有文件? w+????????? 读写,创建或打开,覆盖已有文件? a+????????? 读写,创建或打开,在已有文件末尾追加? t?????????? 按文本方式打开 (缺省)? b????????? ?按二进制方式打开
???????? 文件的打开模式
文件的关闭 (fclose函数)函数原型? int fclose(FILE *fp);参数说明? fp:要关闭的文件指针返回值? 若成功,返回0? 若出错,返回EOF(-1)不用的文件应关闭,防止数据破坏丢失
?
函数???? 功能????????? 函数?? ?功能fputc ?输出字符???? fprintf? 格式化输出fgetc? 输入字符???? fscanf?? 格式化输入putc?? 输出字符???? putw??? ?输出一个字getc?? 输入字符???? getw??? ?输入一个字fwrite?输出数据块???fputs?? ?输出字符串fread? 输入数据块???fgets??? 输入字符串
??????????? 文件的读写
feof函数
函数原型 int feof(FILE *fp);参数 fp:文件指针返回值??若文件结束,返回非零值? 若文件尚未结束,返回0
?
fputc/putc函数函数原型? int fputc(int c, FILE *fp);? int putc(int c, FILE *fp);参数? c :要输出到文件的字符? fp:文件指针返回值? 若成功,返回输出的字符? 若失败,返回EOF
?
fgetc/getc函数
函数原型? int fgetc(FILE *fp);? int getc(FILE *fp);参数? fp:文件指针返回值? 若成功,返回输入的字符? 若失败或文件结束,返回EOF
???????????????????????????????????????? 12月12日 22:37于实验室
?
?/*****************************中英汉字显示程序*****************************/?????? char?? far*?? get_ascii_rom(unsigned?? int?? reg_bx)/*获得ROM字符集首址*/??? {struct?? REGPACK?? reg;????? reg.r_ax=0x1130;????? reg.r_b