1.fread函数
fread函数的使用格式如下:
fread(buffer, size, count, fp);
其中:
buffer是存放数据的存储空视频压缩标准间的起始地址;
size是数据块的大小(字华尔街英语节数);
count是读多少个块;
fp是文件类型指针。
fread函数的功能是:
从fp所指向的文件中读取数据块,读取的字节数为size*count,读取来的数据存放在buffer为起始地址的内存中。若fread函数的返回值等于count,则执行本函数读取数据成功;若文件结束或发生错误,返回值等于0。
例如,若已知有“int a[10];”,则下面语句:
fread(a, sizeof(int), 10, fp);
从fp所指向的文件中读取2*10个字节(即10个整数)存放于数组a中。
2.fwrite函数
fwrite函数的使用格式如下:
fwrite(buffer, size, count, fp);
其中四个参数的含义与fread函数基本相同,只不过现在是将内存中从buffer地址开始的数据往fp所指向的文件里写。
fwrite函问到数的的功能是:将内存中从buffer地址开始的数据往fp所指向的文件里写,写入到文件里的字节数为size*count。
例如,下面语句:
int b[6]={1,3,5,7,9,11};
fwrite(b, sizeof(int), 6, fp);
将内存中b数组的6个元素值(2*6个字节)写入fp所指向的文件里。
举例1:每次读写一个结构体类型数组元素
#include <stdio.h>
#include <stdlib.h>
typedef 中国上市企业 struct stu{
c蝙蝠侠阿卡姆之城har name[20];
int num;
int age;
} S;
int main()
{
S stu1[3],stu2[3],*p;
FILE 骐达怎么样 *fp;
int i;
printf("input data:\n");
for(i=0;i<3;i++)
{
printf("姓名:");scanf("%s",stu1[i].name);
printf("学号/年龄:");scanf("%d%d",&stu1[i].num,&stu1[i].age);
}
//把数组中元素的值写到磁盘文件
fp = fopen("D:\\file3.dat","wb+") ;
if(p == NULL) {
printf("文件不能打开!\n");exit(0);
}
else {
for(i=0;i<3;i+五路财神图片+) {
if(fwrite(&stu1[i],sizeof(struct stu),1,fp)!=1)
printf("不能写入,出错!\n");
else
printf("成功写入一个元素!\n");
} }
// p = stu2;
//从文件读入数据!
rewind(fp); //返回文件头
for(i=0;i<3;i++) {
if(fread(&stu2[i],sizeof(struct stu),1,fp)!=1)
printf("不能从文件读入!\n");
}
//输出
for(i=0;i<婚戒定制3;i++) {
printf("姓名:%s\t学号:%d\t年龄:%d\n",stu2[i].name,stu2[i].num,stu2[i].age);
}
fclose(fp)锂离子电池正极材料;
return 0;
}
第二种方法:
#include <stdio.h>
#include <stdlib.h>
typedef struc潘世勋t stu
{
char name[20];
int 华尼托精神num;
int age;
} S;
int main()
{
S stu1[3],欧珀莱眼霜stu2[3],*p;
FILE *fp;
int i;
printf("input youtube视频data:\n");
for(i=0;i<伊朗语3;i++)
{
printf("姓名:");scanf("%s",stu1[i].name);
printf("学号/年龄:");scanf("%d%d",&stu1[i].num,&stu1[i].age);
}
//把数组中元素的值写到磁盘文件
fp = fopen("D:\\file3.dat","wb+") ;
if(p == NULL)
百度搜索量{
printf("文件不能打开!\n");exit(0);
}
else
{
for(i=0;i<3;i++)
{
if(fwrite(&stu1[i],sizeof(strum2mct 重庆现状stu),1,fp)!=1)
printf("不能写入,出错!\n");
else
printf("成功写入一个元素!\n");
}
}
// p = stu2;
//从文件读入数据!
rewind(fp); //返回文件头
for(i=0;i<3;i++)
{
if(fread(&stu2[i],sizeof(struct stu),1,fp)!=1)
printf("不能从文件读入!\n");
else
printf("姓名:%s\t学号:%d\t年龄:%d\n",stu2[i].name,stu2[i].num,stu2[i].age);
}
//输出
/*for(i=0;i<3;i++)
{
printf("姓名:%s\t学号:%d\t年龄:%d\n",stu2[i].name,stu2[i].num,stu2[i].age);
}
*/
fclose(fp);
return 0;
}
第二种方法:整体写入或整体读入。
#include <stdio.h>
#include <stdlib.h>
typedef struct stu
{
char name[20];
int num;
int age;
} S;
int main()
{
S stu1[3],stu2[3],*p;
FILE *fp;
int i;
printf("input data:\n");
for(i=0;i<3;i++)
{
printf("姓名:");scanf("%s",stu1[i].name);
printf("学号/年龄:");scanf("%d%d",&stu1[i].num,&stu1[i].ag绿松石价格e);
}
//把数组中元素的值写到磁盘文件
fp = fopen("D:\\file3.dat","wb+") ;
if(p == NULL)
{
printf("文件不能打开!\n");exit(0);
}
else
{
if(fwrite(&stu1[0],sizeof(st哥德巴赫猜想ruct stu),3,fp)!=3)
printf("不能写入,出错!\n");
else
printf("成功写入!\n");
}
rewind(fp); //返回文件头
//P =stu2;
if(fread(stu2,sizeof(struct stu),3,fp)!=3)
printf("不能从文件读被代表入!\n");
else
printf("成功读入数据!\n");
for(i=0;i<3;i++)
{
printf("姓名:%s\t学号:%d\t年龄:%d\n",stu2[i].name,stu2[i].num,stu2[i].age);
}
fclose(fp);
return 0;
}
本文发布于:2023-05-27 13:43:05,感谢您对本站的认可!
本文链接:http://www.ranqi119.com/ge/85/136511.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |