当前位置: 代码迷 >> 综合 >> fread
  详细解决方案

fread

热度:50   发布时间:2024-02-12 05:35:20.0
#include <stdio.h>
#include <string.h>
#include <errno.h>struct student
{char name[15];int id;int age;
};//./a.out filename
int main(int argc, const char *argv[])
{FILE *fp;//将stu1写入文件//从文件中读取信息存放到stu2struct student stu1 = {"xiao ming",1,10};struct student stu2;if((fp = fopen(argv[1],"w+")) == NULL){fprintf(stderr,"Fail to fopen %s : %s.\n",argv[1],strerror(errno));return -1;}/**int fread(void *ptr,int size,int nmemb,FILE *stream)*int fread(地址,对象的大小,对象个数,流);*返回值:成功返回实际读取对象的个数,失败和读到文件尾部返回0** 注意:* 1.对象 可以基本类型和构造类型(结构体类型)* * 例如:每次读取一个int对象* int value;* fread(&value,sizeof(int),1,fp);* 2.实际读取的字节数 : 实际读取对象的个数 * 对象的大小 * * n = fread(addr,sizeof(int),10,fp);* 读取文件大小: n * sizeof(int)** size_t fwrite(const void *ptr, size_t size, size_t nmemb,*	     FILE *stream);**	功能:将ptr指向地址的内容,按照对象的方式写到stream**	例如:fwrite(addr,sizeof(int),5,stream);*  将5个int类型数据写到stream,大小 sizeof(int) * 5 = 40byte*/fwrite(&stu1,sizeof(struct student),1,fp);fflush(fp);int n;close(fp);fp = fopen(argv[1],"r");n = fread(&stu2,sizeof(struct student),1,fp);printf("n = %d.\n",n);printf("%s  %d %d.\n",stu2.name,stu2.id,stu2.age);close(fp);return 0;
}