写文件:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:以数据块的方式给文件写入内容
参数:
:准备写入文件数据的地址ptr
: 为 类型,此参数指定写入文件内容的块数据大小size size_t unsigned int
:写入文件的块数,写入文件数据总大小为:nmemb size * nmemb
:已经打开的文件指针stream
返回值:
成功:实际成功写入文件数据的块数目,此值和 相等nmemb
失败:0
#include<stdio.h>
typedef struct student
{
char name[20];
int age;
int score;
char addr[50];
} stu;
int main()
{
FILE* fp=fopen("d:/c.txt","wb");//写入二进制文件
if(!fp) return -1;
int a=5678;//写入一个数据
fwrite(&a,sizeof(int),1,fp);
int arr[]={1,2,3,4,5,6,7,8,9,10};//写入一个数组
fwrite(&arr,sizeof(int),10,fp);
stu ss[3]=
{
{"高欢",10,96,"北京海淀"},
{"麻阳",12,98,"河南濮阳"},
{"建国",11,87,"河北唐山"}
};
for(int i=0;i<3;i++)//写入一个结构体
fwrite(&ss[i],sizeof(stu),1,fp);
fclose(fp);
return -1;
}
读文件:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:以数据块的方式从文件中读取内容
参数:
:存放读取出来数据的内存空ptr 间
: 为 类型,此参数指定读取文件内容的块数据大小size size_t unsigned int
:读取文件的块数,读取文件数据总大小为:nmemb size * nmemb
:已经打开的文件指针stream
返回值:
成功:实际成功读取到内容的块数,如果此值比 小,但大于 ,说明读到文件nmemb 0
的结尾。
失败:0
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
char name[20];
int age;
int score;
char addr[50];
} stu;
int main()
{
FILE* fp=fopen("d:/c.txt","rb");
if(!fp) return -1;
int value;
fread(&value,sizeof(int),1,fp);//读出一个数据
printf("%d\n",value);
int arr[10]={0};
fread(arr,sizeof(int),10,fp);
for(int i=0;i<10;i++)//读出一个数组
printf("%d\n",arr[i]);
stu* ss=(stu*)malloc(sizeof(stu)*3);
for(int i=0;i<3;i++)//读出一个结构体
{
fread(&ss[i],sizeof(stu),1,fp);
printf("姓名:%s ",ss[i].name);
printf("年龄:%d ",ss[i].age);
printf("成绩:%d ",ss[i].score);
printf("地址:%s\n",ss[i].addr);
}
free(ss);
fclose(fp);
return 0;
}