ITKeyword,专注技术干货聚合推荐

注册 | 登录

C语言 fread()与fwrite()函数说明与示例

dreamInTheWorld 分享于 2016-07-29

推荐:C语言函数fread() , fwrite() ,fseek()用法分析

网上已经有不少关于c语言函数fread() 和fwrite() 用法分析的文章,在此将这两个函数的用法写下来,是为了巩固所学,加深印象,也为了日后方便查询复习比较,如果

2020腾讯云“6.18”活动开始了!!!(巨大优惠重现!4核8G,5M带宽 1999元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1059

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

读写文件数据块

函数原型

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

ptr:指向保存数据的指针;

size:每个数据类型的大小;

count:数据的个数;

stream:文件指针函数返回操作数据的个数。

注意

(1)写操作fwrite()后必须关闭流fclose()。
(2)不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。

测试:

int数据类型的读写操作

结构体数据类型的读写操作


推荐:C语言文件读写例题,fgetc,fputc,fgets,fputs,fread,fwrite,fscanf,fprintf

int main(){ FILE *fp; char ch; char str[1024],st[11];//str[]用来读取文件中的内容, st[]用来输入内容到文件 fp=fopen("dest.txt","w+"); //fgetc与

int数据类型的读写操作:

// main_int.cpp
#include <stdio.h>
#include <stdlib.h>

void readData() {
    FILE * fp;
    int buffer[4];
    if((fp=fopen("myfile.txt","rb"))==NULL) {
        printf("cant open the file");
        exit(0);
    }
    if(fread(buffer,sizeof(int),4,fp)!=4){
        printf("file read error\n");
        exit(0);
    }
    for(int i=0;i<4;i++){
        printf("%d\n",buffer[i]);
    }
} 

void writeData() {
    FILE * pFile;
    int buffer[] = {1, 2, 3, 4};
    if((pFile = fopen ("myfile.txt", "wb"))==NULL){
        printf("cant open the file");
        exit(0);
    }
    // unbroken data could be write (demo is 4 times)
    fwrite (buffer , sizeof(int), 4, pFile);
    fclose (pFile);
}

int main (){
    writeData();
    readData();
    return 0;
}


结构体数据类型的读写操作:

// main_struct.cpp
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct{
    int age;
    char name[30];
}people;

void writeStruct(){
    FILE * pFile;
    int i;
    people per[3];
    per[0].age=20;strcpy(per[0].name,"li");
    per[1].age=18;strcpy(per[1].name,"wang");
    per[2].age=21;strcpy(per[2].name,"zhang");

    if((pFile = fopen ("myfile.txt", "wb"))==NULL)
    {
        printf("cant open the file");
        exit(0);
    }

    for(i=0;i<3;i++)
    {
        if(fwrite(&per[i],sizeof(people),1,pFile)!=1)
            printf("file write error\n");
    }
    fclose (pFile);
}

void readStruct(){
    FILE * fp;
    people per;
    if((fp=fopen("myfile.txt","rb"))==NULL)
    {
      printf("cant open the file");
      exit(0);
    }

    while(fread(&per,sizeof(people),1,fp)==1) {
        // 如果读到数据,就显示;否则退出
        printf("%d %s\n",per.age,per.name);
    }
}


int main ()
{
    writeStruct();
    readStruct();
    return 0;
}

转载:http://www.cnblogs.com/xudong-bupt/p/3478297.html


官方案例写入:

// mainfwrite.cpp
/* fwrite example : write buffer */
#include <stdio.h>

int main ()
{
  FILE * pFile;
  char buffer[] = { 'x' , 'y' , 'z' };
  pFile = fopen ("myfile.bin", "wb");
  fwrite (buffer , sizeof(char), sizeof(buffer), pFile);
  fclose (pFile);
  return 0;
}

官方案例读取:

// mainfread.cpp
/* fread example: read an entire file */
#include <stdio.h>
#include <stdlib.h>

int main () {
    FILE * pFile;
    long lSize;
    char * buffer;
    size_t result;

    pFile = fopen ( "myfile.bin" , "rb" );
    if (pFile==NULL) {
        fputs ("File error",stderr); 
        exit (1);
    }

    // obtain file size:
    fseek (pFile , 0 , SEEK_END);
    lSize = ftell (pFile);
    rewind (pFile);
    printf("lSize =%ld\n", lSize);

    // allocate memory to contain the whole file:
    buffer = (char*) malloc (sizeof(char)*lSize);
    if (buffer == NULL) {
        fputs ("Memory error",stderr); 
        exit (2);
    }

    // copy the file into the buffer:
    result = fread (buffer,1,lSize,pFile);
    if (result != lSize) {
        fputs ("Reading error",stderr); 
        exit (3);
    }

    /* the whole file is now loaded in the memory buffer. */
    printf("%s\n", buffer);

    // terminate
    fclose (pFile);
    free (buffer);
    return 0;
}

官方例程:http://www.cplusplus.com/reference/cstdio/fread/



推荐:文件操作函数fread/fwrite/fseek演示例程

fread函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功返回 0。 size_t fread ( void *

读写文件数据块 函数原型 size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); ptr:指

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。