13.标准c库打开创建文件读写文件光标移动

运用的起来和open那些没什么多大区别,懂得各个参数的意思即可仿造open那些来操作。

第一种:fwrite 和 fread 的写法

#include <stdio.h>
#include <string.h>

int main()
{
        FILE *fp;
        char *str = "wenjian chu ru men !";
        char readbuf[128] = {0};

        //FILE *fopen(const char *path, const char *mode);
        fp = fopen("./yy.text","w+");      //“w+” 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件

        //size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
        //const void *ptr  :缓冲区buf
        //size_t size      : 一个字符的大小  
        //size_t nmemb     :个数
        //FILE *stream     :哪个文件
        fwrite(str,sizeof(char),strlen(str),fp);        //第二个参数:写一个字符的大小,第三个参数:写strlen计算的字符串的个数这么多次

        // int fseek(FILE *stream, long offset, int whence);
        fseek(fp,0,SEEK_SET);

        //size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
        fread(readbuf,sizeof(char),strlen(str),fp);
        
        printf("read data: %s \n",readbuf);

        fclose(fp);

        return 0;
}

第二种:fwrite 和 fread 的写法 

#include <stdio.h>
#include <string.h>

int main()
{
        FILE *fp;
        char *str = "wenjian chu ru men !";
        char readbuf[128] = {0};

        //FILE *fopen(const char *path, const char *mode);
        fp = fopen("./yy.text","w+");        //“w+” 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件

        //size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
        //const void *ptr  :缓冲区buf
        //size_t size      : 一个字符的大小  
        //size_t nmemb     :个数
        //FILE *stream     :哪个文件
        fwrite(str,sizeof(char)*strlen(str),1,fp);        //第二个参数:把整个字符串直接写完,第三个参数:写一次

        // int fseek(FILE *stream, long offset, int whence);
        fseek(fp,0,SEEK_SET);

        //size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
        fread(readbuf,sizeof(char)*strlen(str),1,fp);
        
        printf("read data: %s \n",readbuf);

        fclose(fp);

        return 0;
}

 fwrite 和 fread 的返回值由它们的第三个参数决定,但两个有一点点区别。 fwrite的第三个参数可任意写数字,因为写入的时候就是写了任意数字这么多次,只是看不到。但是fread只能按照规则写(建议手动代码看结果)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枕上

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

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

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

打赏作者

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

抵扣说明:

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

余额充值