zoukankan      html  css  js  c++  java
  • fwrite与fread

    函数原型

    1. size_t fread(void *buffer, size_t size, size_t count, FILE *stream);  
    2. size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream);  

    功能

     fread和fwrite用于读写记录,这里的记录是指一串固定长度的字节,比如一个int、一个结构体或者一个定长数组。参数size指出一条记录的长度,而count指出要读或写多少条记录,这些记录在ptr所指的内存空间中连续存放,共占size * count个字节,fread从文件stream中读出size  * count个字节保存到buffer中,而fwrite把buffer中的size,count个字节写到文件stream中。

    头文件

    #include<stdio.h>

    返回值

      返回值:读或写的记录数,成功时返回的记录数等于count,出错或读到文件末尾时返回的记录
    数小于count,也可能返回0。

    说明

    (1)buffer:是一个指针,对fwrite来说,是要输出数据的地址;
    (2)size:要写入内容的单字节数;
    (3)count:要进行写入size字节的数据项的个数;
    (4)stream:目标文件指针
    (5)返回实际写入的数据项个数count。

    例:

    例1:fwrite

    /****************fwrite*******************/
    #include <stdio.h>  
    #include <stdlib.h>  
    
    struct record {  
        char name[10];  
        int age;  
    };  
    
    int main(void)  
    {  
        struct record array[2] = {{"Ken", 24}, {"Knuth", 28}};  
        FILE *fp = fopen("recfile", "w");  
        if (fp == NULL) {  
            perror("Open file recfile");  
            exit(1);  
        }  
        fwrite(array, sizeof(struct record), 2, fp);  
        fclose(fp);  
        return 0;  
    }  

    例2:fread

    /*****************fread*********************/
    #include <stdio.h>  
    #include <stdlib.h>  
    
    struct record {  
        char name[10];  
        int age;  
    };  
    
    int main(void)  
    {  
        struct record array[2];  
        FILE *fp = fopen("recfile", "r");  
        if (fp == NULL) {  
            perror("Open file recfile");  
            exit(1);  
        }  
        fread(array, sizeof(struct record), 2, fp);  
        printf("Name1: %s	Age1: %d
    ", array[0].name, array[0].age);  
        printf("Name2: %s	Age2: %d
    ", array[1].name, array[1].age);  
        fclose(fp);  
        return 0;  
    }  


    例3:将一个字符串写入文件:

    char *str="hello,I am a test program!";  
    fwrite(str,sizeof(char),strlen(str),fp)  


    例4:将一个字符数组写入文件:

    char str[]={'a','b','c','d','e'};  
    fwrite(str,sizeof(char),sizeof(str),fp)  

    3.将一个整型数组写入文件:

     int a[]={12,33,23,24,12};
    fwrite(a,sizeof(int),nmemb,fp);

        

    注:

    1、在定义文件指针时,要将文件指针指向空;如 FILE *fp = NULL;
    2、文件操作完成后,需要将文件关闭,一定要注意,否则会造成文件所占用内存泄露和在下次访问文件时出现问题。
    3、文件关闭后,需要将文件指针指向空,这样做会防止出现游离指针,而对整个工程造成不必要的麻烦;如:fp = NULL;
  • 相关阅读:
    C++调用WebService
    vs2005 环境的字体和颜色的设置
    自娱自乐~经典24点游戏
    再探利用C++的STL和堆栈编程思想实现数学四则运算计算结果
    如何在Linux中关闭apache服务(转)
    ios推送:本地通知UILocalNotification
    ASIHTTPRequest的使用(转)
    实战新浪微博、腾讯微博的分享功能(转)
    UIImagePickerController拍照与摄像(转)
    iOS通过http post上传图片 (转)
  • 原文地址:https://www.cnblogs.com/zhangjiansheng/p/8244055.html
Copyright © 2011-2022 走看看