失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 标准C库函数:fopen() fwrite() fread() fseek() fclose()的基本用法。

标准C库函数:fopen() fwrite() fread() fseek() fclose()的基本用法。

时间:2023-04-09 10:03:05

相关推荐

标准C库函数:fopen() fwrite() fread() fseek() fclose()的基本用法。

一,简要概括与open()系列函数的区别

fopen()系列函数是是标准C语言库函数,因此拥有良好的移植性;

open()系列函数是UNIX系统调用,移植性有限。

详细内容请移驾链接内容:

/NickyYe/p/5497659.html

二,函数头文件:

因为fopen(),fwrite(),fread(),fseek(),fclose()这一系列函数都是标准的C库函数,所以头文件都是:

#include <stdio.h>

三,函数原型:

fopen: FILE *fopen(const char *pathname, const char *mode);

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

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

fseek: int fseek(FILE *stream, long offset, int whence);

fclose: int fclose(FILE *stream);

🔺fopen()参数说明:FILE *fopen(const char *pathname, const char *mode);

① const char *pathname:文件名/路径,这是char型指针,须在”文件名/路径“上加上双引号;

② const char *mode:文件的操作权限,这里也是字符型指针,须在“操作权限”上加双引号;

🔺fwrite()参数说明:size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

①const void *ptr: ptr写入数据后存放地址;

② size_t size:size是的块长度;

③ size_t nmemb: nmemb是块的数量;

④ FILE *stream: 文件流

实际写入长度为size_t nmemb,返回值为块成功写入块的nmemb数量。

🔺fread()参数说明:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

①void *ptr: 读取数据后存放地址

② size_t size:size是块长度

③ size_t nmemb: 是块的数量

④ FILE *stream: 文件流

实际读取长度为size_t nmemb,返回值为块成功读取块的nmemb数量。

🔺fseek()参数说明:int fseek(FILE *stream, long offset, int whence);

① FILE *stream : 文件流;

② long offset: 偏移位数;

③ int whence: 光标位置;

fseek()用法和lseek()的用法基本一样,详情可以参考链接内容:

/m0_74985965/article/details/128626066?spm=1001..3001.5502

🔺fclose()参数说明:int fclose(FILE *stream);

用法:关闭文件,文件操作中必不可少的一步;

FILE *stream:文件流fp

四,代码实现:

① 对字符串进行读写操作;

#include <stdlib.h>#include <string.h>int main(){FILE *fp;char *str = "qwertyuiop";//将字符串在地址str中char *readBuf = NULL;fp = fopen("./file1","w+");fwrite(str,sizeof(char),strlen(str),fp);//参照原型,有两种写法//fwrite(str,sizeof(char)*strlen(str),1,fp);int size = fseek(fp,0,SEEK_END);readBuf = (char *)malloc(sizeof(char)*size);fseek(fp,0,SEEK_SET);fread(readBuf,sizeof(char),strlen(str),fp);//两种写法,意义一样//fread(readBuf,sizeof(char)*strlen(str),1,fp);printf("%s\n",readBuf);fclose(fp);return 0;}

② 对整型数进行读写操作:

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){FILE *fp;int data = 100;int data2 = 0;;fp = fopen("./file1","w+");fwrite(&data,sizeof(int),1,fp);fseek(fp,0,SEEK_SET);fread(&data2,sizeof(int),1,fp);printf("data2=%d\n",data2);fclose(fp);return 0;}

③ 对结构体进行读写操作:

#include <stdio.h>#include <stdlib.h>#include <string.h>struct Test{int a;char c;};int main(){FILE *fp;struct Test data = {100,'h'};struct Test data2;fp = fopen("./file1","w+");fwrite(&data,sizeof(struct Test),1,fp);fseek(fp,0,SEEK_SET);fread(&data2,sizeof(struct Test),1,fp);printf("a=%d,c=%c\n",data2.a,data2.c);fclose(fp);return 0;}

④ 对结构体数组进行读写操作:

#include <stdio.h>#include <stdlib.h>#include <string.h>struct Test{int a;char c;};int main(){FILE *fp;struct Test data[2] ={{100,'h'},{101,'j'}};struct Test data2[2];fp = fopen("./file1","w+");fwrite(&data,sizeof(struct Test)*2,1,fp);fseek(fp,0,SEEK_SET);fread(&data2,sizeof(struct Test)*2,1,fp);printf("a=%d,c=%c\n",data2[0].a,data2[0].c);printf("a=%d,c=%c\n",data2[1].a,data2[1].c);fclose(fp);return 0;}

如果觉得《标准C库函数:fopen() fwrite() fread() fseek() fclose()的基本用法。》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。