1. c语言中,将多个结构体数据写到一个文件中,应该如何读取
C语言把一个结构体数组写入文件分三步:
1、以二进制写方式(wb)打开文件
2、调用写入函数fwrite()将结构体数据写入文件
3、关闭文件指针
相应的,读文件也要与之匹配:
1、以二进制读方式(rb)打开文件
2、调用读文件函数fread()读取文件中的数据到结构体变量
3、关闭文件指针
参考代码如下:
#include<stdio.h>
structstu{
charname[30];
intage;
doublescore;
};
intread_file();
intwrite_file();
intmain()
{
if(write_file()<0)//将结构体数据写入文件
return-1;
read_file();//读文件,并显示数据
return0;
}
intwrite_file()
{
FILE*fp=NULL;
structstustudent={"zhangsan",18,99.5};
fp=fopen("stu.dat","wb");//b表示以二进制方式打开文件
if(fp==NULL)//打开文件失败,返回错误信息
{
printf("openfileforwriteerror ");
return-1;
}
fwrite(&student,sizeof(structstu),1,fp);//向文件中写入数据
fclose(fp);//关闭文件
return0;
}
intread_file()
{
FILE*fp=NULL;
structstustudent;
fp=fopen("stu.dat","rb");//b表示以二进制方式打开文件
if(fp==NULL)//打开文件失败,返回错误信息
{
printf("openfileforreaderror ");
return-1;
}
fread(&student,sizeof(structstu),1,fp);//读文件中数据到结构体
printf("name="%s"age=%dscore=%.2lf ",student.name,student.age,student.score);//显示结构体中的数据
fclose(fp);//关闭文件
return0;
}
2. c语言怎么把一个结构体存入文件,在把文件读取怎
C语言,要将结构体中的数据存到磁盘上需要使用与文件操作相关的库函数。
首先要使用文件打开函数fopen()。
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
其次,使用文件读写函数读取文件。
在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。
下面使用格式化读写函数fscanf和fprintf实现对文件A.txt(各项信息以空格分割)的读取,并存入结构体数组a中,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。
C语言源程序如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;
int main(int argc, char* argv[])
{
//打开文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);
//读写文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}
//关闭文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
3. c语言怎么用文件保存和读取 结构体数组/
#include <stdio.h>
int main()
{
struct test {
int a;
char s[10] ;
double d ;
} tr[3] , tw[3] ={
{1,"hello1" , 100 },
{2,"hello2" , 90},
{3,"hello3", 200}
} ; //定义一个结构体数组
FILE *fp ;
fp=fopen("struct.dat" , "wb" );
if ( fp == NULL )
return -1 ;
fwrite( (char*)tw , sizeof(struct test), 3 , fp ); //将数组写入文件
fclose(fp);
//以上完成写操作
fp=fopen("struct.dat" , "rb" );
if ( fp == NULL )
return -1 ;
fread( (char*)tr , sizeof(struct test), 3 , fp ); //从文件中读三个结构体的数据,也可以一个一个的读
fclose(fp);
//输出读到的数据
{
int i;
for(i=0;i<3;i++ )
printf("%d %s %lf\n" , tr[i].a , tr[i].s, tr[i].d );
}
return 0;
}
4. 如何用C语言读取txt文件中的数据到结构体数组中
1、在vscode里面添加了Python文件和用于读取的文本文件。
5. c语言中怎么把一文件中的内容读到一结构体中
首先你要保证文件中存储的数据描述就是你定义的结构体的描述,然后你在open文件后直接读sizeof(student)大小的东西存入一个你的student结构体里面就可以了,当然如果你有多个student元素,那就读sizeof(student)*n
这个大出来,依次赋值