c之文件

     c文件类的函数,一直让我头痛不已,因为常常忘记,这里写个网络笔记,以后可以看。

 

文件格式

      c语言中的文件按照存储格式可以分为文本文件和二进制文件,文本文件中存取的基本单位是字符即以字节为单位,每个字节存储的是一个ASCII码值;而二进制文件中数据则是按其在内存中的存储样式原样输出到二进制文件中存储的,可能比较拗口,其实本质就是,比如你写个int二进制文件中,那么它在内存中占用的是32bit即四个字节(这里假设int的size为四个字节)。

      我们可以举个例子,例如12345。

      文本文件中的存储格式为:

      00110001   00110010   00110011   00110100   00110101

     在二进制文件中的存储为:

      001100000   00111001

      主要区别归纳:

     (1)读写操作基本单位不同。一个是字节,一个是以变量,结构体等数据块为单位。

     (2)一般文本文件存储文字信息。一般由可显示字符构成;而二进制文件则存储非文本的数据,例如考试成绩,图像,声音=。

 

      万能钥匙之 FILE *文件指针名

      //声明一个文件指针之后,就可以用它进行文件的一些基本操作了,包括打开,读写和关闭=。

   

      文件缓冲区:文件数据和内存数据交流过程中,中间有个缓冲区,这个比较高级,先不写。

 

文件基本操作:

     1。文件打开 fopen(cosnt char *, const char *)//第一个是文件路径,第二个是打开方式

                 打开方式之详解:

           

                   ---------------------------------------------------------------------------------------

                   |  打开方式      |        含义         |      指定文件不存在     |   指定文件存在       |  

                   ----------------------------------------------------------------------------------------

                   |          r         | 以只读方式打开 |      出错                    |  正常打开              |

                   |          w        | 以只写方式打开 |      建立新文件          |  原来的内容将被清除|

                   |          a        |以追加方式打开   |     出错                     | 文件尾部添加数据   |

                   |         r+        | 以读写方式打开  |     出错                    | 正常打开               |

                   |        w+       | 以写读方式打开  |     建立新文件            | 正常打开               |

                   |        a+        | 以读取/追加方式 |    建立新文件            |在文件尾部追加内容 |

                   |                    |    建立新文件      |                               |                            |

                   -----------------------------------以上方式对文本文件有效--------------------------

 

                   -----------------------------------------------------------------------------------------

                  | 打开方式        |        含义           |  指定文件不存在          | 指定文件存在         |

                  ------------------------------------------------------------------------------------------

                  |      rb            | 以只读方式打开   |  出错                         | 正常打开              |

                  |      wb          |  以只写方式打开  |   建立新文件               |  文件原内容被清除  |

                  |      ab           |  以追加方式打开 |  建立新文件                 | 文件尾部追加内容  |

                  |      rb+          | 以读写方式打开   |  出错                         | 正常打开              |

                  |      wb+        | 以写读方式打开   |   建立新文件                | 原有内容丢失       |

                  |      ab+         | 以读取/追加方式  |   建立新文件               | 原文件尾部追加     |

                   ----------------------------------以上方式针对二进制文件--------------------------

 

一 文件打开 FILE * fopen(const char *,const char *)

          第一个参数是文件路径名,第二个参数是打开方式;如果成功打开,返回一个FILE*,如果失败返回NULL。

二  文件关闭  fclose(FILE*)

           关闭文件,就是让指针和文件脱离关系。要及时的关闭文件,例如在写文件的时候,如果不关闭的话,可能导致在缓冲区的数据丢失没有及时的写入到文件中去;另外一个好处就是FILE指针可以重新分配指向文件。

三  文件介绍检验 feof(FILE*)

           已到文件尾部,返回为1;否则为0。

四  文件之读写

  READ:

    char  fgetc(FILE*)//从文件指针指定的文件中读取一个字符,如果读到文件末尾,则返回文件结束标识EOF。

    char * fgets(char*s, int n, FILE *fp)//从fp指定的文件中读取字符串,返回字符串首地址。

                                                                 读取过程结束之判定:(1)读取了n-1个字符,加上'/0',赋给串s;

                                                                                               (2)读取到了回车符;

                                                                                                 (3)读到了文件末位。

    fscanf(FILE*, 格式串, 输入项表)//

    fread(buf*,size,count,FILE*)//从指定文件中读取count个数据块(每个数据块大小为size个字节),存放到buf指定的地方

  Write:

     fputc(char,FILE*)//成功则返回char的ASC||值;否则返回EOF

     fputs(字符串,FILE*)//成功返回0;失败返回非0

     fprintf(FILE*,格式串,输出项表)//成功返回写字节数;失败返回一个负数

     fwrite(buf,size,cout,FILE*)

  使用说明:以上都是成双成对的,主要是针对有char(fgetc和fputc),字符串(fgets和fputs()),以及整型&字符型或按照指定长宽的数据(fscanf和fprintf),实型数据或结构体类型数据(fwrite和fread).

五 随机读写

    offset  ftell(FILE*)//返回当前在文件位置距离文件开头的一个偏移量;失败返回-1

    fseek(FILE*,offset, from)//在文件FILE*的from处,移动offset个字节(正值则向文件尾部移动,负值则向文件头部移动),为最新的文件位置。

   常用字符常量:

       0                     SEEK_SET              文件开头

       1                     SEEK_CUR             文件当前指针位置

       2                     SEEK_END             文件末尾

    rewind(FILE*)//将文件位置指针移动到文件开始位置

 

小练习:简单留言程序,每次打开message.txt文件显示内容,允许用户添加留言,并保存到文件中。

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大胖5566

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值