当前位置: 代码迷 >> C语言 >> [求助]请问下结构体怎么使用?
  详细解决方案

[求助]请问下结构体怎么使用?

热度:228   发布时间:2007-05-06 20:02:48.0
[求助]请问下结构体怎么使用?
请具体说说,我不会,最好举个例子,谢谢了.
搜索更多相关的解决方案: 结构体  

----------------解决方案--------------------------------------------------------
还有顺便把指针对应的一,二维数组表示方法说一下.
----------------解决方案--------------------------------------------------------
typedef {
类型 类型名1;
类型 类型名2;
类型 类型名...;
} 结构名;
----------------解决方案--------------------------------------------------------
举个例子吧
----------------解决方案--------------------------------------------------------

以下为本人原创,其中主要利用了结构体

/* 工作管理程序 */
/* SK-CHINA 2007 */
/* Version 0.0.1 */

/* WORKS.C */

/*===========头文件部分=============*/
#define NEO_temp_dir_unused
#include<neo.h>
#include<winkj.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
/*==================================*/

/*==========数据结构定义============*/
typedef struct
{
char name[10];
char xb; /*性别: 0.男 1.女 2.空记录*/
char gzsj; /*工作时间*/
unsigned char zc; /*职称*/
/*
对应序号:

1.技术员
2.助理工程师
3.工程师
4.高级工程师
5.其它
6.空记录
*/
unsigned char xl; /*学历*/
/*
对应序号:

0.博士
1.硕士
2.大本
3.大专
4.中专
5.初中
6.其它
7.空记录
*/
char zy[40]; /*专业*/
char byyx[40]; /*毕业院校*/
char gzyj[10][600]; /*工作业绩*/
char dwyj[300]; /*单位意见*/
char kp[200]; /*考评*/
} G; /*此结构体内部变量名除name外均使用拼音首字母表示*/
/*==================================*/

/*==========全局变量定义============*/
FILE *input,*output;
G data[250];
unsigned char num=0; /*记录最大号*/
unsigned char window_mode; /*0.窗口 1.全屏*/
/*====按钮 滚动条 列表框变量部分====*/
char *botton_bmp[3]={"botton1.bmp","botton2.bmp","botton3.bmp"}; /*按钮资源图片*/
char *list_croll_name_bmp[19]={"back0.bmp","up.bmp","left.bmp","down.bmp","right.bmp","l_up.bmp","l_down.bmp","r_down.bmp","r_up.bmp","up1.bmp","up2.bmp","up3.bmp","move1.bmp","move2.bmp","move3.bmp","down1.bmp","down2.bmp","down3.bmp","back2.bmp"}; /*带滚动条的列表框的资源图片*/
SJ_botton_T *botton[5]; /*开辟5个按钮对象*/
int key_botton[5]; /*用于接受按钮的返回值*/
SJ_list_croll_T *list_croll; /*开辟一个带滚动条的列表框*/
char *list_croll_name[250]; /*滚动条的列表框各选项名称*/
int key_list_croll; /*用于接受普通列表框的返回值*/
/*==================================*/
char temp_string[30];
char temp_null[10]="";
char cmp_xl[8][5]={"博士","硕士","大本","大专","中专","初中","其它",""};
char cmp_xb[3][3]={"男","女",""};
char cmp_zc[7][11]={"","技术员","助理工程师","工程师","高级工程师","其它","空记录"};
/*==================================*/

void init()
{
SJ_set_color_text(0); /*设置文字的颜色为黑色*/
SJ_set_size_text(12); /*用12字号*/
neo_init(); /* 初始化NEO库 */
set_window_mode(window_mode);
set_vbe_mode(VBE640X480X64K);
show_bmp("back.bmp",0,0);
install_keyboard();
install_mouse();
show_mouse();
string_out("SK-CHINA 2007-2008 write BY S.K BY C language",10,10);
}
void inp()
{
if((input=fopen("data","rb"))==NULL)
{
printf("无法找到数据库(DATA),按任意键退出");
getch();
exit(1);
}
else
{
fread(&num,sizeof(unsigned char),1,input);
fread(&data,sizeof(G),250,input);
fclose(input);
}
if((input=fopen("works.ini","r"))==NULL)
{
printf("无法找到配置文件(works.ini),按任意键退出");
getch();
exit(2);
}
else
{
fscanf(input,"%d",&window_mode); /*视窗模式: 0:窗口 1:全屏*/
fclose(input);
}
printf("管理输入窗口\n");
}
void adddata()
{
printf("执行添加操作\n");
num++;
printf("请输入姓名:");
scanf("%s",data[num].name);
printf("请选择性别: 0.男 1.女");
scanf("%d",&data[num].xb);
printf("请输入工作时间:");
scanf("%d",&data[num].gzsj);
printf("请选择职称: 1.技术员 2.助理工程师 3.工程师 4.高级工程师 5.其它");
scanf("%d",&data[num].zc);
printf("请选择学历: 0.博士 1.硕士 2.大本 3.大专 4.中专 5.初中 6.其它");
scanf("%d",&data[num].xl);
printf("请输入专业:");
scanf("%s",data[num].zy);
printf("请输入毕业院校:");
scanf("%s",data[num].byyx);
printf("数据已添加完毕,数据记录号:%d\n",num);
}
void deldata()
{
int i,k;
char c;
printf("请输入要删除数据的数据记录号:");
scanf("%d",&i);
getchar();
printf("数据记录号:%d 姓名:%s,确定要删除吗(Y/N)",i,data[i].name);
scanf("%c",&c);
if(c=='Y' || c=='y')
{
for(k=i;k<=num;k++) data[k]=data[k+1];
num--;
printf("删除成功\n");
}
else
printf("删除被用户停止\n");
}
void redata()
{
int i,s;
char c;
printf("请输入数据的数据记录号:");
scanf("%d",&i);
printf("\n数据记录号:%d 姓名:%s\n",i,data[i].name);
printf("请选择欲修改的项目:\n1.姓名\n2.性别\n3.工作时间\n4.职称\n5.学历\n6.专业\n7.毕业院校\n8.工作业绩\n9.单位意见\n10.考评\n");
scanf("%d",&s);
switch(s)
{
case 1:
printf("原记录姓名:%s,确定要修改吗?(Y/N)",data[i].name);
getchar();
scanf("%c",&c);
if(c=='Y' || c=='y')
{
printf("请输入新的姓名:");
scanf("%s",data[i].name);
printf("修改完毕\n");
}
else
printf("操作被终止\n");
break;
case 2:
printf("原记录姓别:%s,确定要修改吗?(Y/N)",cmp_xb[data[i].xb]);
getchar();
scanf("%c",&c);
if(c=='Y' || c=='y')
{
printf("请选择新的姓别: 0.男 1.女");
scanf("%d",&data[i].xb);
printf("修改完毕\n");
}
else
printf("操作被终止\n");
break;
}
}
int main(void)
{
int i,k;
int mousex,mousey; /*鼠标位置记录*/

inp();
init();

botton[0]=SJ_create_botton(20,50,"增加管理资料",botton_bmp,NULL,1);
botton[1]=SJ_create_botton(20,70,"修改管理资料",botton_bmp,NULL,1);
botton[2]=SJ_create_botton(20,90,"删除管理资料",botton_bmp,NULL,1);
botton[3]=SJ_create_botton(20,110,"退出管理系统",botton_bmp,"ESC",1);
botton[4]=SJ_create_botton(490,10,"",botton_bmp,NULL,1);
for(i=0;i<249;i++) list_croll_name[i]=data[i].name;
list_croll_name[249]=temp_null;
list_croll=SJ_create_list_croll(20,150,4789,21,list_croll_name,list_croll_name_bmp); /*创建一个带滚动条的列表框*/
while(1)
{
for(i=0;i<4;i++)
key_botton[i]=SJ_win_botton(botton[i]);
if(key_botton[0]==1) adddata();
if(key_botton[1]==1) redata();
if(key_botton[2]==1) deldata();
if(key_botton[3]==1) break;
key_list_croll=SJ_win_list_croll(list_croll);
if(key_list_croll>=0)
{
bmp_blit("back0.bmp",0,0,125,145,500,320);
neo_printf(130,150,"姓名:%s",data[key_list_croll-1].name);
neo_printf(220,150,"性别:%s",cmp_xb[data[key_list_croll-1].xb]);
neo_printf(285,150,"学历:%s",cmp_xl[data[key_list_croll-1].xl]);
neo_printf(360,150,"毕业院校:%s",data[key_list_croll-1].byyx);
neo_printf(525,168,"数据记录号:%d",key_list_croll-1);
neo_printf(130,168,"专业:%s",data[key_list_croll-1].zy);
neo_printf(360,168,"职称:%s",cmp_zc[data[key_list_croll-1].zc]);
}
}
{ /*保存修改,退出程序*/
for(i=0;i<5;i++) SJ_delete_botton(botton[i]);
SJ_delete_list_croll(list_croll);
output=fopen("data","wb");
fwrite(&num,sizeof(unsigned char),1,output);
fwrite(&data,sizeof(G),250,output);
fclose(output);
}
return 0;
}

END_OF_MAIN();


----------------解决方案--------------------------------------------------------
谢谢先收下,慢慢看!!!!!!!
----------------解决方案--------------------------------------------------------
结构体一般用于链表  
----------------解决方案--------------------------------------------------------
  相关解决方案