当前位置:首页 » 编程语言 » c语言结构体数组

c语言结构体数组

发布时间: 2022-01-20 04:22:09

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;
}

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

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

⑵ C语言结构体数组问题

不知道你是否测试过,是否总使用的内存超过64KB就不灵了?如果是那样,应答将编译模式调节成large far模式再试

⑶ C语言结构体数组的使用

(1)初始化语句中的每个初始化值用单引号引起来,即改为iA[N]={{‘1’,‘2’},{‘1’,‘1’},{‘1’,‘3’}},B[N]={{‘1’,‘1’},{‘1’,‘3’},{‘1’,‘5‘}};
(2)输出语句printf("%s.%s ",(A[m].a),(A[m].b));中的%s改成%c

⑷ c语言结构体成员为结构体数组问题

这是因为内存溢出。
系统在分配内存的时候不是按照变量定义的先后顺序分配的,并且分配的位置是随机的。
所以会出现你所说的情况,在使用的时候要小心。

希望可以帮助到你。

⑸ C语言 结构体数组的个数如何自己定义

C99标准出来以前,C语言不支持动态定义数组大小,只能采用动态分配指针方式来完成动态数组的个数定义。如:

structst{
intx,y;
charstr[10];
};
structst*array;
intn;
printf("inputn:");scanf("%d",&n);
array=(structst*)malloc(n*sizeof(structst));//动态分配n个结构体空间,接下来array的操作,与数组操作是相同的,如:array[0].x=1;

C99以后,C语言标准开始支持动态定义数组,但动态数组,在其确定个数之后,在其生命期中,就不可变了。如:

structst{
intx,y;
charstr[10];
};
intn;
printf("inputn:");scanf("%d",&n);
structstarray[n];//定义动态数组
array[0].x=1;

⑹ C语言 结构体数组 计算个数

给数组初始化,判断值是否被改变-----------------这题没意义的

⑺ C语言结构体数组

#include<stdio.h>
struct student
{
int num;
char name[20];
float score1,score2,sum,average;
};
void main()
{
struct student stu[5];
int i;

for(i=0;i<5;i++)
{
printf("请依次输入第%d个学生的学号,姓名,和两门成绩:",i+1);
scanf("%d%s%f%f",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2);
stu[i].sum=stu[i].score1+stu[i].score2;
stu[i].average=stu[i].sum/2;
}
printf("学号 姓名 成绩 总成绩 平均成绩\n");
for(i=0;i<5;i++)
printf("%d %s %.2f %.2f %.2f
%.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sum,stu[i].average);
}

⑻ C语言编程。定义一结构体数组

#include <stdio.h>
#include <string>

#define MAX 3

struct Student
{
int number;
char name[20];
char jg[20];
float score;
}student[MAX+1];//student[0]留作暂存器

int main()
{
int i;
int j;
int k;
int temp;
for (i = 1; i < MAX+1; ++i)
{
printf("input the information of a student:\n");
scanf("%d %s %s %f", &student[i].number,student[i].name,student[i].jg,&student[i].score);
}

for (i = 1; i < MAX; ++i)//排序
{
k = i;
for (j = i+1; j < MAX+1; j++)
{
if (student[j].score > student[k].score)
{
k = j;
}

}

if (k != i)
{
student[0].number = student[k].number;
strcpy(student[0].name,student[k].name);
strcpy(student[0].jg,student[k].jg);
student[0].score = student[k].score;

student[k].number = student[i].number;
strcpy(student[k].name,student[i].name);
strcpy(student[k].jg,student[i].jg);
student[k].score = student[i].score;

student[i].number = student[0].number;
strcpy(student[i].name,student[0].name);
strcpy(student[i].jg,student[0].jg);
student[i].score = student[0].score;
}

}

for (i = 1; i < MAX+1; ++i)
{
printf("%d,%s,%s,%f\n", student[i].number,student[i].name,student[i].jg,student[i].score);

}
return 0;
}

⑼ C语言,结构体数组的长度

C语言不支持动态分配内存,你需要自己分配,大概这样
#include<stdio.h>
#include<stdlib.h>
typdef struct Node
{
int value;
int next;
}Node;

int main()
{
int a;
scanf("%d",&a);
Node *p=malloc(a*sizeof(Node));
.......
}
这样p就相当于Node数组的第一个元素的指针,也可以当作数组名使用了。

热点内容
删数据库事件 发布:2024-11-15 12:10:54 浏览:455
数据库选课管理系统 发布:2024-11-15 12:10:15 浏览:126
android音乐波形图 发布:2024-11-15 11:57:12 浏览:378
福建社保银行卡初始密码是多少 发布:2024-11-15 11:47:40 浏览:911
游戏多开用什么配置 发布:2024-11-15 11:46:51 浏览:729
管理java版本 发布:2024-11-15 11:44:03 浏览:629
ndk编译的程序如何执行 发布:2024-11-15 11:43:18 浏览:626
轻应用服务器适合搭建网站吗 发布:2024-11-15 11:36:08 浏览:246
c语言的百分号 发布:2024-11-15 11:34:24 浏览:31
一加五安卓8什么时候推送 发布:2024-11-15 11:19:40 浏览:854