fopenfwritefread 函数——读写结构体类型数据详解
Posted iqyqqqqqq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fopenfwritefread 函数——读写结构体类型数据详解相关的知识,希望对你有一定的参考价值。
问题引入
几个概念需要了解
- 文件读写过程:打开、读、写、关闭
- 结构体类型,也是一种类型,用简单数据类型的思维去考虑复杂类型
fopen()函数
函数原型:
FILE *fopen(const char *path, const char *mode)
使用注意:需要判断产生的文件指针是不是空指针
fwrite()函数
函数原型:
size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
函数说明:fwrite()用来将数据写入文件流中. 参数stream 为已打开的文件指针, 参数ptr 指向欲写入的数据地址, 总共写入的字符数以参数size*nmemb 来决定. Fwrite()会返回实际写入的nmemb 数目.
使用注意:prt指针当前指向的位置
fread()函数
函数原型:
size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
实例解析
//写入两个学生数据到结构体stua
//存入到结构体stub并读出
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 5
#define SIZE (sizeof(struct stu))
#define PATH "demo.txt"
typedef struct stu
char name[N];
int age;
STU;
int main (void)
STU stua[2], stub[2],*pa=stua, *pb=stub;
printf("Write File:\\n");
for (int i=0; i<2; i++, pa++)
scanf("\\t%s%d", pa->name, &pa->age);
FILE *fp;
if ( (fp=fopen(PATH, "wb+")) == NULL )
printf("Cannot open file\\n");
getch();
exit(1);
pa = stua;
fwrite(pa, SIZE, 2, fp);
rewind(fp);
fread(pb, SIZE, 2, fp);
printf("\\nRead File:\\n");
for (int j=0; j<2; j++, pb++)
printf("\\t%5s %2d\\n", pb->name, pb->age);
fclose(fp);
return 0;
以上是关于fopenfwritefread 函数——读写结构体类型数据详解的主要内容,如果未能解决你的问题,请参考以下文章