专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

fopen函数怎么用,fopen函数用法详解

来源:小易整编  作者:小易  发布时间:2023-03-22 04:56
摘要:fopen函数怎么用,fopen函数用法详解C语言中文件操作,即文件打开,文件写入、文件读取、文件关闭等。在使用这些功能时,需要了解其基本的使用规则,如:文件读写前,必须先使用fopen函数打开文件。使用fopen打开时,还要指明文件的打开...

fwrite()函数用于将内存区域中的数据写入到本地文本

函数原型:

/** @func:  fwrite *   @brief: 向文件写入 *   @para:  [buffer]:指向数据块的指针 *           [size]:每个数据的大小,单位为Byte(例如:sizeof(int)就是4) *           [count]:数据个数 *           [stream]:文件指针,如fp *   @return:实际写入的个数 */ size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

fwrite的返回值随着调用格式的不同而不同:

调用格式1:fwrite(buf,sizeof(buf),1,fp);,将整个buf数据作为1个数据写入,则写入个数是1

成功写入返回值为1

调用格式2:fwrite(buf,1,sizeof(buf),fp);,将1Byte作为1个数据写入,则写入个数是sizeof(buf)

成功写入则返回实际写入的数据个数(单位为Byte)

fclose

写完数据后要调用fclose()关闭流,不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。

函数原型:

/** @func:  fclose *   @brief: 关闭文件 *   @para:  [stream]:文件指针,如fp *   @return:关闭成功返回0,关闭失败返回EOF */ int fclose( FILE *stream );

02

使用示例

基础示例

打开&写入

小技巧:

用malloc函数申请区域时是申请的一片char*区域,通过强制类型转换后可装任意类型数据

#include <stdio.h> #include <stdlib.h> #define DATA_SIZE 100 int main() {    unsigned char *pRawData = NULL;    int *pData = NULL;        /*使用malloc申请一块内存*/    pRawData = (unsigned char *)malloc(sizeof(int) * DATA_SIZE);    /*将该块内存强制转换为unsigned int*/    pData = (int *) pRawData;        /*对该块内存进行赋值 */    int i = 0;    for(i=0; i<DATA_SIZE; i++)    {        pData[i] = i;    }        /*打开*/    FILE *fp = fopen("../test1.bin","wb");    if(NULL == fp)    {        printf("open file fail\r\n");        goto end;    }        /*写入*/    size_t cnt = fwrite(pData, sizeof(int), DATA_SIZE, fp);    if(DATA_SIZE != cnt)    {        printf("write file fail\r\n");        fclose(fp);        goto end;    }        /*关闭*/    fclose(fp);    printf("file write ok\r\n");     end:    free(pRawData);/*malloc用完后要free*/    system("pause");        return 0; }

打开&读取

注意:

以2进制的形式写入,读取时也必须是以2进制形式读取!否则会读取到错误的数据

#include <stdio.h> #include <stdlib.h> #define DATA_SIZE 100 int main() {    int pData[DATA_SIZE];        /*打开*/    FILE *fp = fopen("../test1.bin","rb");/*写入的是bin, 读取的也必须是bin*/    if(NULL == fp)    {        printf("open file fail\r\n");        goto end;    }        /*读取*/    size_t cnt = fread(pData, sizeof(int), DATA_SIZE, fp);    if(DATA_SIZE != cnt)    {        printf("read file fail, read size:%d\r\n", cnt);        fclose(fp);        goto end;    }    printf("data[30]:%d\r\n", pData[30]);/*打印出其中一个数据*/        /*关闭*/    fclose(fp);    printf("file read ok\r\n");     end:    system("pause");        return 0; }

特殊示例

写入结构体

/*定义结构体*/ typedef struct { char name[256]; unsigned int page; float price; }BOOK; /*声明实例化一个结构体对象*/ BOOK book1 = {    .name = "C语言基础",    .page = 320,    .price = 25.0, };

写入方式:

/*打开*/ FILE *fp1 = fopen("../test2.bin","wb"); if(NULL == fp1) {    printf("open file fail\r\n");    goto end; } /*写入*/ size_t cnt1 = fwrite(&book1, 1, sizeof(BOOK), fp1); if(sizeof(BOOK) != cnt1) {    printf("write file fail\r\n");    fclose(fp1);    goto end; }

读取方式:

/*打开*/ FILE *fp2 = fopen("../test2.bin","rb"); if(NULL == fp2) {    printf("open file fail\r\n");    goto end; } /*读取*/ size_t cnt2 = fread(&myBook, 1, sizeof(BOOK), fp2); if(sizeof(BOOK) != cnt2) {    printf("read file fail\r\n");    fclose(fp2);        goto end; } printf("myBook info: name:%s, page:%d, price:%.2f\r\n",       myBook.name, myBook.page, myBook.price);

03

总结

读(fread)或写(fwrite)文件前,要先打开(fopen)文件。

读(fread)或写(fwrite)文件后,要关闭(fclose)文件。

打开(fopen)文件时,要特别注意打开的参数指定。

带r参数打开文件时,该文件必须存在。

带w参数打开文件时,该文件会被先清空,若文件不存在会先创建。

带a参数打开文件时,写入内容将会在文件尾部添加,若文件不存在会先创建。

带b参数打开文件时,打开的是二进制文件。

带t参数打开文件时,或不指明b或t,则打开的是文本文件。

带+参数打开文件时,就有了读与写的功能。


本文地址:百科问答频道 https://www.neebe.cn/wenda/936283_2.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共2页 1 2 当前是最后一页

百科问答
小编:小易整编
相关文章相关阅读
  • fopen函数怎么用,fopen函数用法详解

    fopen函数怎么用,fopen函数用法详解

    fopen函数怎么用,fopen函数用法详解C语言中文件操作,即文件打开,文件写入、文件读取、文件关闭等。在使用这些功能时,需要了解其基本的使用规则,如:文件读写前,必须先使用fopen函数打开文件。使用fopen打开时,还要指明文件的打开...

  • 周排行
  • 月排行
  • 年排行

精彩推荐