c语言中怎么把一个结构体数组写入文件

fwrite(&cus[i],sizeof(struct client),1,fp) 是什么意思

C语言把一个结构体数组写入文件分三步:

1、以二进制写方式(wb)打开文件

2、调用写入函数fwrite()将结构体数据写入文件

3、关闭文件指针

相应的,读文件也要与之匹配:

1、以二进制读方式(rb)打开文件

2、调用读文件函数fread()读取文件中的数据到结构体变量

3、关闭文件指针

参考代码如下:

#include<stdio.h>
struct stu {
char name[30];
int age;
double score;
};
int read_file();
int write_file();
int main()
{
if ( write_file() < 0 ) //将结构体数据写入文件
return -1;
read_file(); //读文件,并显示数据
return 0;
}

int write_file()
{
FILE *fp=NULL;
struct stu student={"zhang san", 18, 99.5};
fp=fopen( "stu.dat", "wb" ); //b表示以二进制方式打开文件
if( fp == NULL ) //打开文件失败,返回错误信息
{
printf("open file for write error\n");
return -1;
}
fwrite( &student, sizeof(struct stu), 1, fp ); //向文件中写入数据
fclose(fp);//关闭文件
return 0;
}

int read_file()
{
FILE *fp=NULL;
struct stu student;
fp=fopen( "stu.dat", "rb" );//b表示以二进制方式打开文件
if( fp == NULL ) //打开文件失败,返回错误信息
{
printf("open file for read error\n");
return -1;
}
fread( &student, sizeof(struct stu), 1, fp ); //读文件中数据到结构体
printf("name=\"%s\" age=%d score=%.2lf\n", student.name, student.age, student.score ); //显示结构体中的数据
fclose(fp);//关闭文件
return 0;
}

 fwrite(const void*buffer,size_t size,size_t count,FILE*stream);   

(1)buffer:指向结构体的指针(数据首地址)   
(2)size:一个数据项的大小(一般为结构体大小)
(3)count: 要写入的数据项的个数,即size的个数   
(4)stream:文件指针。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-06
fwrite(const void*buffer,size_t size,size_t count,FILE*stream); (1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。
(2)size:要写入的字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针。
这里fwrite(&cus[i],sizeof(struct client),1,fp)
sizeof用来测量结构体client的长度、、也就是要写入的字节数、、本回答被提问者采纳
第2个回答  2010-07-04
fwrite(&cus[i],sizeof(struct client),1,fp);这一句的作用:
将数组cus的第i+1个结构体写入文件。因为他传入的是指针&cus[i],即第i+1个元素的首位地址,而且写入的长度是该结构体类型的size。
如果你想要把整个结构体数组都写入文件,则应该为:
fwrite(cus,sizeof(cus),1,fp);
或者
fwrite(&cus[0],sizeof(cus),1,fp);

对于像结构体和数组这样的串行数据,在内存中是连续存储的。所以我们在处理的时候,经常只需要确认它的首地址和长度就OK了.对这一点应用熟练了,你会充分感受到指针带来的便捷,在很多问题上也就如鱼得水……

仅供参考!

c语言中怎么把一个结构体数组写入文件
C语言把一个结构体数组写入文件分三步:1、以二进制写方式(wb)打开文件 2、调用写入函数fwrite()将结构体数据写入文件 3、关闭文件指针 相应的,读文件也要与之匹配:1、以二进制读方式(rb)打开文件 2、调用读文件函数fread()读取文件中的数据到结构体变量 3、关闭文件指针 参考代码如下:include<s...

c语言怎么把结构体数组写入txt文件
fopen("student.txt","wb")b就是二进制的意思。你用二进制形式将student.txt打开 而fwrite也是将内存中的数据不经转换直接写入文件,所以文件中保存的是二进制形式,当然看到乱码了。你试试:if((fp1=fopen("student.txt","w"))==NULL){printf("cannot open this file\\n");exit(0);} printf...

c语言 怎么将结构体写入文件
最好用2进制方法打开文件,用fwrite 写文件。读时也用用2进制方法打开文件,用fread读.这样,写的时候按整个结构写,读也按整个结构读,字符串有空白也没关系。FILE *fp;fp=fopen("my.dat","wb");fwrite(&stu,sizeof(stu),1,fp); \/\/ 写1个结构 for (i=0;i<10;i++) fwrite(&stud...

C语言中,如何把数组里的数据写入文件
使用for循环语句+文件操作函数即可把数组里的数据写入文件。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell...

选择优化高效性的运算将dat文件数据 写入一个结构体中 再导入sql data...
C语言把一个结构体数组写入文件分三步:1、以二进制写方式(wb)打开文件 2、调用写入函数fwrite()将结构体数据写入文件 3、关闭文件指针 相应的,读文件也要与之匹配:1、以二进制读方式(rb)打开文件 2、调用读文件函数fread()读取文件中的数据到结构体变量 3、关闭文件指针 参考代码如下:include<...

C语言文件读写结构体里面的数据怎样存到磁盘文件上
C语言,要将结构体中的数据存到磁盘上需要使用与文件操作相关的库函数。首先要使用文件打开函数fopen()。fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用...

c语言如何把数据整齐的输入到文件再从文件整齐的输出
只要按着一定的格式输出到文件 再按着一定的格式从文件中读出就可以了 比如使用一个结构体 include <stdio.h>#include <string.h>typedef struct{ int a; char b; long c;}DATA;int main(int argc,char **argv){ FILE *fp; DATA data; data.a=1; data.b='c'; ...

C++如何读入一个文件中的结构体数组数据?
1 如果文件中存储的方式为二进制形式数据:需要使用fread(C语言风格)或ifsteam的read成员函数(C++风格。)从文件中读取结构体数据到对应的结构体指针上。如 struct test { int a;};struct test t;fread(&t, 1,sizeof(t), fp);或 file.read(&t, sizeof(t));2 如果文件中,是以文本方式...

c语言怎么把东西写到文件里,再从文件输出到屏幕上
用WritePrivateproFileString( )和GetPrivateproFileString( ) 两个函数就可以了啊, 不用打开文件 , 关闭文件, 定位, 移动文件指针之类的 为防止有人说C下不能用, 特写一个简单的 include <stdio.h>#include <stdlib.h>#include <windows.h>struct STRUCT{char name[20];float chinese;float math;...

求一段c语言代码,功能要求把文件一中的的一个数据块复制到文件二中,切...
意思是文件一中保存着一个结构体数组 现需要将其中一个元素(结构体数据)移动到文件二中?看到就删除的操作 可以将文件一中的数据全部读取出来 然后将需要复制的数据保存在文件二中 然后再覆盖文件一就可以了(去除已复制的元素)如果代码不想自己写的话 我可以有偿代劳 ...

相似回答