文件IO----标准IO和Linux文件IO

1. 文件IO有两种

    标准CIO  : 标准C库为我们提供的函数 
    Linux文件IO: Linux系统自带的函数

2. Linux存在全缓存 默认是512字节 

   行缓存: 前提条件,写入的文件是终端 
   
3//打开文件 
    FILE* fp = fopen("./test.c","r");
    if(fp == NULL)
    {
        perror("fopen failed");
        printf("fopen failed:%s\n",strerror(errno));
    }
    //"r"  只读 
    //"r+" 读 + 写 
    //"w"  只写 + 创建 + 清空
    //"w+"  写+ 读 + 创建 + 清空 
    //"a"  只追尾写 + 创建 
    //"a+" 追尾写 + 读 + 创建 
    
    (1) 咬文嚼字读 
    
    //文件拷贝 
    
    //方法一 
    //循环,读一个写一个
    while(1)
    {
        ch = fgetc(fpr);
        if(ch == EOF)//读取到文件的尾巴,结束
            break;
        fputc(ch, fpw);
    }
    //方法二 
    while((ch=fgetc(fpr)) != EOF)
        fputc(ch, fpw);
    
    (2) 一行一行的读取和写入 
        char buf[100];
    
        //文件拷贝 
        //当 fgets返回值是NULL的时候,读取到文件的尾巴 
        while(fgets(buf, 100, fpr) != NULL)
        {
            fputs(buf, fpw);
        }
        
        
        重点: 标准IO存在缓存区 
        
                如何刷新缓存区手动 fflush(fp);
                                   fclose(fp);. 针对于文件的操作  打开 读 写 关闭 

        

#include <stdio.h>\n 
    
    buf ---> 15 
    #include <stdi\0
    
    strlen(buf) ---> 14
    
    buf[14-1] == '\n'
        count++;
    
    buf ---> 15
    012345
    o.h>\n\0
    
    strlen(buf) ---> 5
    
    buf[5-1]

    buf[strlen(buf)-1] == '\n'
                   
    (3) 一次读取一大片
        
        char buf[100];
        
        fread(buf, 1, 100, fpr);//返回值的意义:实际读取到的块数(记录数,对象数)
        fread(buf, 2, 50, fpr);//一块的大小是2个字节,一次最多读取50块
        
        while((ret=fread(buf,1,100,fpr)) > 0)//ret里面保存的是每次实际读取到的块数
            fwrite(buf,1,ret,fpw);//第三个参数代表实际写入的块数
        
        
        #include <string.h>
        memset(buf, '\0', sizeof(buf));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值