【fread/fwrite】C语言API之fread/fwrite函数详解

编程入门 行业动态 更新时间:2024-10-25 16:21:42

【fread/fwrite】C语言API之fread/fwrite函数<a href=https://www.elefans.com/category/jswz/34/1770044.html style=详解"/>

【fread/fwrite】C语言API之fread/fwrite函数详解

文章目录

  • 1.函数定义及原型
  • 2.函数功能
  • 3.函数示例

1.函数定义及原型

#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

参数说明

参数说明
ptr读取或写入的数据存放的内存的指针(因为是void型,所以它可以是数组,也可以是新开辟的空间,buffer就是一个索引)
size每次读取或写入的字节数
nmemb读取或写入的次数
stream要读取或写入的文件的指针

2.函数功能

函数说明备注
fread函数 fread() 从 stream 指向的流中读取 nmemb 个数据项,每个 size 字节长,并将它们存储在 ptr 给定的位置。Thread safety(线程安全)
fwrite函数 fwrite() 将 nmemb 个数据项(每个 size 字节长)写入 stream 指向的流,从 ptr 给出的位置获取它们。Thread safety(线程安全)

返回值

  1. 成功:fread() 和 fwrite() 返回读取或写入的项目数,此数字等于仅当 size 为 1 时传输的字节数;
  2. 失败:如果发生错误或到达文件末尾,则返回值是一个短项计数(或零)。

扩展
1.文件读取方式:二进制方式和字符方式
2.fread可以读二进制文件,有时用字符方式去读文件不能读完整个文件,因为字符方式用特定的标记结尾的,读取时只要碰到该标记就自动结束。但咱们可以使用二进制方式。
注意:fread() 不区分文件结尾和错误,调用者必须使用 feof(3) 和 ferror(3) 来确定发生了什么!

3.函数示例

//fwrite_fread.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(void)
{FILE *fp;int size = 0;char *freadbuf;char *writebuf = "This is my test about fwrite!\n";fp = fopen("test","rwb+");if(NULL == fp) {printf("Error:Open input.c file fail!\n");return -1;}if(ferror(fp))printf("Error to read the file\n");fseek(fp, 0, SEEK_END);size = ftell(fp);rewind(fp);freadbuf = (char*)malloc(sizeof(char)*size);fread(freadbuf,1,size,fp);printf("%s",freadbuf);printf("Press any key to fwrite:%s",writebuf);fseek(fp, size, SEEK_END);fwrite(writebuf,1,strlen(writebuf),fp);fclose(fp);free(freadbuf);return 0;
}

执行步骤

vi fwrite_fread.c
gcc fwrite_fread.c -o fwrite_fread
echo 12345678 > test
cat test 
./fwrite_fread 
cat test 

结果如下

更多推荐

【fread/fwrite】C语言API之fread/fwrite函数详解

本文发布于:2023-06-15 21:18:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/733728.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详解   函数   语言   fread   fwrite

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!