C语言之文件操作

来源:互联网 发布:软件定义物联网 编辑:程序博客网 时间:2024/05/16 07:32
一、文本文件与二进制文件
1、文本文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码.
2、二进制文件是按二进制的编码方式来存放文件的。

二、文件定义·
1、文件结构指针的定义方法为FILE *fp
fp是FILE类型的指针变量,通过fp可以找到某个存放某个文件的结构体变量,然后找到
该文件,对文件实行操作。
2、文件可以看成一组字符或二进制数据的集合,叫做数据流,结束标志为-1,符号为
EOF,其定义包含在头文件中
定义格式
#include EOF (-1)
由于FILE为结构体类型,因此FILE 类型的变量之间不能简单进行进行赋值运算。

文件处理函数基本都以FILE类型的变量


三、文件操作详解
1、文件的打开操作 fopen 打开一个文件
格式 FILE *fopen
打开文件的作用是:
(1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;
(2)开辟一个缓冲区;
(3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;
2、文件的关闭操作 fclose 关闭一个文件
int fclose(FILE *fp)
3、文件的读写操作:
@ fgetc 从文件中读取一个字符
int fgetc(FILE *fp)
返回值:
正常返回: 返回读取字符的代码。
非正常返回:返回EOF。例如,要从"写打开"文件中读取一个字符时,会发生错误而返回一个EOF。

@fputc 写一个字符到文件中去
int fputc(int ch,FILE *fp
返回值
  正常返回: 要写入字符的代码。
  非正常返回:返回EOF。例如,要往"读打开"文件中写一个字符时,会发生错误而返回一个EOF

@fgets 从文件中读取一个字符串
char *fgets(char *str,int n,FILE *fp)
 返回值
正常返回:返回字符串的内存首地址,即str的值。
非正常返回:返回一个NULL值,此时应当用feof()或ferror()函数来判别是读取到了文
件尾,还是发生了错误。例如,要从"写打开"文件中读取字符串,将
发生错误而返回一个NULL值。

@ fputs 写一个字符串到文件中去
int fputs(char *str,FILE *fp)
 返回值
  正常返回: 写入文件的字符个数,即字符串的长度。
  非正常返回:返回一个NULL值,此时应当用feof()或ferror()函数来判别是读取到
了文件尾,还是发生了错误。例如,要往一个"读打开" 文件中写字符串时,
会发生错误而返回一个NULL值。

@fprintf 往文件中写格式化数据
int fprintf(FILE *fp,char *format,arg_list)
返回值
  无。

@ fscanf 格式化读取文件中数据
fread 以二进制形式读取文件中的数据
int fread(void *buffer,unsigned sife,unsigned count,FILE *fp)
返回值
  正常返回:实际读取数据块的个数,即count。
  异常返回:如果文件中剩下的数据块个数少于参数中count指出的个数,或者发生了
错误,返回0值。此时可以用feof()和ferror()来判定到底出现了什么
情况。

@ fwrite 以二进制形式写数据到文件中去
int fwrite(void *buffer,unsigned sife,unsigned count,FILE *fp)
返回值
  正常返回:实际输出数据块的个数,即count。
  异常返回:返回0值,表示输出结束或发生了错误。
@getw 以二进制形式读取一个整数
int getw(FILE *fp)
返回值
  正常返回:所读取整数的值。
  异常返回:返回EOF,即-1。由于读取的整数值有可能是-1,所以必须用feof()或
ferror()来判断是到了文件结束,还是出现了一个出错。

@ putw 以二进制形式存贮一个整数
int putw(int n,FILE *fp)
 返回值
 正常返回:所输出的整数值。
 异常返回:返回EOF,即-1。由于输出的整数值有可能是-1,所以必须用feof()或
ferror()来判断是到了文件结束,还是出现了一个出错。

4、文件状态检查函数
@ feof 文件结束
int feof(FILE *fp)
 返回值
   0:假值,表示文件未结束。
   1:真值,表示文件结束。

@ ferror 文件读/写出错
int ferror(FILE *fp)
返回值
   0:假值,表示无错误。
   1:真值,表示出错。

@ clearerr 清除文件错误标志
intclearerr(FILE *fp)
无返回值

5、文件定位函数 
@ rewind 反绕
void rewind(FILE *fp)
无返回值

@fseek 随机定位
int fseek(FILE *fp,long offset,intbase)
返回值
  正常返回:当前指针位置。
  异常返回:-1,表示定位操作出错。

0 0
原创粉丝点击