C语言文件操作

C语言文件操作:
流式文件与二进制文件:

…… 

文件结构体:
typedef struct{

    char *_ptr;

        int   _cnt;

        char *_base;

        int   _flag;

        int   _file;

        int   _charbuf;

        int   _bufsiz;

        char *_tmpfname; 

} FILE;

文件指针:
FILE *fp;

文件打开函数:
fopen(filename, "at++");
文件关闭函数:
fclose(fp);

文件操作函数:
1)字符读写函数:
   字符变量 = fgetc(文件指针);
   eg:char ch = fgetc(fp);
   函数说明:
   1、在fgetc()函数中,读取的文件必须为打开状态。
   2、读取的字符结果可以不保存,如:
   fgetc(fp);
   3、文件的内部指针,在读取之后将向后移动一个位置。
       
   用于将字符ch写入到文件fp中:
   fputc(ch,fp);
   函数说明:
   1、被写入的文件可以用写,读写追加方式打开,用写或读写方式打开一个已经存在的文件的时候将清除原文件的内容,
      写入字符从文件首开始。如需保留原有文件的内容应该用写并追加的方式打开。被写入的文件若不存在,则创建。
   2、每写入一个字符,文件内部指针将向后移动一个字节。
   3、fputc()函数有一个返回值,写入成功返回值为写入的字符,不成功返回EOF,可以以此来判断是否写入成功。
   
2)字符串读写函数:
fgets(字符数组名,n,文件指针)
fgets(str,n,fp);
意义为从fp中读取n-1个字符到str中。
其中n是一个正整数,表示从文件中读取的字符不超过n-1个。在读入的最后一个字符加上串结束位‘\o’。
函数说明:
1、在读入n-1个字符前,如果遇到了换行符或EOF,则读出结束
2、fgets()函数的返回值为字符数组的首地址。
fputs(字符串,文件指针)
eg:
fputs("I am zbl.", fp);
fputs(str, fp);
3)数据块读写函数
fread(buffer, size, count, fp);
fwrite(buffer, size, count, fp);
其中:
buffer 是一个指针,在fread函数中,它表示存放输入数据的首地址,在fwrite函数中,表示存放输出数据的首地址。
size 表示数据块的字节数。
count 表示要读写的数据块数。
fp 表述文件指针。
eg:
fread(buffer, 4, 5, fp);
表示,从文件fp中,每次读4个字节(long),送入buffer中,连续读取5次,即读五个实数到buffer中。
常使用的方式
fread(buffer, sizeof(变量类型), count, fp);
4)格式化读写函数
fscanf(文件指针,格式化字符串,输出表列);
fprintf(文件指针,格式话字符串,输入表列);
eg:
fscanf(fp, "%s,%d", str, i);
fprintf(fp,"%s,%d", str, i);
另外还有个函数sprintf(buffer, format,……);
将一系列变量写入到字符串buffer中。
5)文件的随机读写
1、文件定位:
移动文件内部指针的函数有两个,即rewind()和fseek()函数
rewind(文件指针)
其作用是把文件内部的指针移动到文件首。
fseek(文件指针,位移量,起始点);
其中:
文件指针,  指向被移动的文件。
位移量, 表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64K时不会出错。当用常量表示位移量,要求加后缀“L”。
其实点 表示从何处开始计算位移量,规定的起始点有三种:文件首, 当期位置,文件尾。
其表示如下所示:
起始点 表示符号 数字表示
文件首 SEEK_SET 0
当前位置          SEEK_CUR 1
文件尾 SEEK_END 2
eg:
fseek(fp, 100L, 0);
其意义是把文件内部位置指针移到离文件首100个字节处。
fseek()函数一般用于二进制文件,在文本文件中由于要进行转换,故往往计算的位置会有错误。
常用方式:
fseek(fp,sizeof(变量类型),起始位置);
eg:
fseek(fp, 2*sizeof(struct student), 0);
6)文件检测函数
1、文件结束检测函数feof()
调用方式:
feof(文件指针);
若文件解锁返回值为1,否则为0。
2、读写文件出错检测函数
ferror(文件指针);
检查文件在用各种输入输出函数读写时是否出错,如ferror()返回值为0表示未出错,否则表示出错.
3、文件出错标志和文件结束标志置0函数
clearerr(文件指针);
用于清除出错标志和文件结束标志,使他们为0值。
参考资料为:C语言程序设计 清华大学出版社
posted @ 2010-09-29 17:32  red_giser  阅读(767)  评论(0编辑  收藏  举报