FILE相关-创新互联

一、FILE结构体:

10年积累的成都网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有龙亭免费网站建设让你可以放心的选择与我们合作。

 #include

#ifndef _FILE_DEFINED
struct _iobuf
{
         char *_ptr;               //文件输入的下一个位置
         int   _cnt;               //当前缓冲区的相对位置
         char *_base;              //指基础位置(文件的起始位置)
         int   _flag;              //文件标志
         int   _file;              //文件的有效性验证
         int   _charbuf;           //检查缓冲区状况,如果无缓冲区则不读取
         int   _bufsiz;            //文件的大小
         char  *_tmpfname;         //临时文件名
};
typedef struct _iobuf FILE;
#define _FILE_DEFINED
#endif

    文件指针:通常用一个指针变量指向一个文件,这个指针变量即称为文件指针。

    定义的一般形式:   FILE *指针变量标识符;

    例:FILE *fp;  // fp:指向文件的文件指针

二、文件的 打开

1.读写文件之前需要进行文件打开(fopen()的调用)

   FILE *fp=fopen((被打开的)文件名,使用文件方式(文件类型和操作要求));

   例:

   FILE *fp1,*fp2;

   fp1=fopen("file","r");

   fp2=fopen("c:\\file","rb");

2.文件使用方式

   1)以字符为标志:

    • r(read)     只读---打开文件(必须存在),只能进行读取。

    • w(write)    只写---创建文件,以进行写入。如果文件已经存在,则删除当前内容。

    • a(append)    追加---追加,打开或创建文件以在文件尾部写入。

    • r+        打开文件以进行更新(读取和写入)。

    • w+        创建文件以进行更新。如果文件已经存在,则删除当前内容。

    • a+        追加,打开或者创建文件以进行更新,在文件尾部写入。

    • t(text)     文本文件,可省略不写(默认)

    • b(banary)    二进制文件

    • +         读和写

   2)使用情况:

  • 打开文件时,若出错,fopen()返回NULL。

if(fp == fopen("c:\\file","r"))
{
     printf("\nerror on open c:\\file!");
     exit(1);
}
  • 将文本文件读入内存,需将ASCII码转换为二进制;反之,将文件以文本方式存入外存储器,将二进制转换为ASCII码。(文本文件读写花费时间较长,二二进制文件读写不存在这种转换)

  • 系统可直接打开及直接使用:标准输入文件、标准输出文件、标准出错输出,定义指针stdin、stdout、stderr分别指向它们(它们的_file描述符分别是0、1和2),因而终端输入输出不许打开终端文件。

三、文件的 关闭

    文件使用完毕需进行关闭(fclose()的调用)

      fclose(文件指针);   例: fclose(fp);

四、文件的 读写

1、字符读写函数  -------【读写一个字符】

   fgetc()  ---  字符变量=fgetc(文件指针);  其文件必须含有 “读” 权限;可连续多次使用,都区多个字符。

          例: ch=fgetc(fp);

     fputc()  ---  fputc(字符表达式,文件指针);  其文件必须含有 “写、追加 权限; 输入成功则返回写入字符,否则返回EOF。

        例:fputc('a',fp);

2.字符串读写函数 ------- 【读写字符串】

   fgets(字符数组,n,文件指针);  //从文件中读取长度为 n-1 的字符串并存入到字符数组中,读入完后,最后自动加上“\0”.   -------- 读字符串函数

        若过程中遇到“换行”或“EOF”,则提前结束;成功则返回值为字符数组的首地址;否则,返回NULL。

        例: fgets(str,n,fp);

   fputs(字符串,文件指针);  //向指定的文件中写入一个给定的字符串;

      字符串末尾的“\0”不写入文件; 成功返回值为0,否则,返回值非零。

3.数据块读写函数 ------- 【读写数据块】

   fread(buffer,size,count,fp);

   fwrite(buffer,size,count,fp);

注释:buffer:指针,表示存放读入数据的首地址(fread());表示存放要写入文件的数据的首地址(fwrite());

     size:数据块的字节数

     count:要读写的数据块块数

   每执行一次操作,文件内部的位置指针自动向后移一位。

   成功则返回count的值(读写数据块的数目),否则返回0。

        例:

   fread(array,4,8,fp); //读入8个实数存放到array中

   fwrite(array,4,8,fp); //将前8个实数依次写入fp指向的文件中

五、格式化读写函数 ----【 磁盘文件】

   fscanf(文件指针,格式字符串,输入列表);

   fprintf(文件指针,格式字符串,输出列表 );

函数fscanf和函数scanf等价看,只是fscanf接收将从中读取数据的文件指针作为参数。

函数fprintf和printf等价,只是fprintf还需要一个指向文件的指针,所有数据都写入到这个文件中。

六、随机读写

1、文件定位

  •  rewind(文件指针);  //将文件内部的位置指针移到文件开始位置

  •  fseek(文件指针,位移量,起始点);  //移动文件内部的位置指针到指定的位置  ( 用于二进制文件;成功时,返回文件位置指针的当前值;出错时,返回-1)

 起始点      符号名      数字表示

SEEK_SET  ----  文件的开头   ----  0

SEEKCUR  ----  文件的当前位  ----  1

SEEK_END  ----  文件的结尾   ----  2

  • ftell(文件指针);  // 返回文件位置指针的当前值(从文件头开始算起的字节数,返回为长×××数,若出错为-1)

2、文件的随机读写

   移动文件的位置指针后,调用顺序读写函数完成读写,从而达到随机读写的目的。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:FILE相关-创新互联
转载源于:http://azwzsj.com/article/dgcoco.html