c语言errorinfo结构体,c结构体与文件
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
#include
#include
#define?filename?"sss.dat"
typedef?struct
{
int?no;
char?*name;
int?math;
}info;
typedef?struct
{
info?*link;
int?length;
int?maxsize;
}head;
void?init(head*);
void?menu(head*);
void?listInfo(head?*head);
void?add(head?*head,info?in);
void?addinfo(head?*head);
void?main()
{
head?head;
head.length=0;
head.maxsize=0;
init(&head);
menu(&head);
}
void?init(head?*in)
{
FILE?*fp;
info?val;
fp=fopen(filename,"rt");
if(fp==NULL)
{
printf("文件讀取失敗!");
fp=fopen(filename,"at");
if(fp==NULL)
{
printf("文件創建失敗!\n");
}
fclose(fp);
}
fp=fopen(filename,"rt");
rewind(fp);
while(feof(fp)!=?0){
//val=(info)malloc(sizeof(info));
fread(&val,sizeof(info),1,fp);
if(&val)
add(in,val);
else{
printf("error");
}
}
fclose(fp);
}
void?write(head?*in)
{
FILE?*fp;
int?i;
info?temp;
fp=fopen(filename,"at");
if(fp==NULL)
{
printf("文件創建失敗!");
}
rewind(fp);
for(i=0;ilength);i++){
temp=in->link[i];
fwrite(&temp,sizeof(info),1,fp);
//printf("%d",i);
}
fclose(fp);
menu(in);
}
void?add(head?*head,info?in)
{
if(head->length==head->maxsize){
head->link=(info?*)malloc((head->maxsize+10)*sizeof(info));
head->maxsize+=10;
}
head->link[head->length]=in;
head->length++;
}
void?menu(head?*head)
{
int?op;
printf("\t\t*********************************\n");
printf("\t\t*??????學生信息管理系統\t\t*\n");
printf("\t\t*\t\t\t\t*\n");
printf("\t\t*??1.添加學生信息\t\t*\n");
printf("\t\t*??2.查看學生信息\t\t*\n");
printf("\t\t*??7.保存信息\t\t\t*\n");
printf("\t\t*??8.退出\t\t\t*\n");
printf("\t\t*********************************\n");
scanf("%d",&op);
getchar();
switch(op){
case?1:
{
addinfo(head);
break;
}
case?2:
{
listInfo(head);
break;
}
case?7:
{
write(head);
break;
}
case?8:
{
exit(0);
break;
}
default:
{
menu(head);
break;
}
}
}
void?addinfo(head?*head)
{char?*name=(char?*)malloc(sizeof(char));
info?*in=(info?*)malloc(sizeof(info));
printf("請輸入學號:");
scanf("%d",&(in->no));
printf("請輸入姓名:");
scanf("%s",name);
in->name=name;
printf("請輸入分數:");
scanf("%d",&(in->math));
add(head,*in);
menu(head);
}
void?listInfo(head?*head)
{
int?i=0;
for(;ilength;i++){
printf("\t%d\n",head->link[i].no);
}
menu(head);
}
為什么調用init方法后head的link還是空啊
總結
以上是生活随笔為你收集整理的c语言errorinfo结构体,c结构体与文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言高函数正确形式,计算机二级C语言考
- 下一篇: LPL十大选手投票结果正式公布:“永远滴