| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:几个小问题 ,求个解释
只看楼主 加入收藏
zhensi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-24
收藏
 问题点数:0 回复次数:1 
几个小问题 ,求个解释
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
struct score        这里的struct函数 是多少字节呢  详细的计算方法?  
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];           这里的data,info1000是什么意思啊  还有temp         
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;


void shuru()
{ if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("找不到文件.\n");
getch();exit(0);
}
for(i=0;i<=1000;i++)
{
printf("\n输入学号:");
gets(data.xuehao);
printf("输入名字:");
gets(data.mingzi);
printf("语文成绩:");
gets(temp);data.score[0]=atof(temp);
printf("数学成绩:");
gets(temp);data.score[1]=atof(temp);
printf("英语成绩:");
gets(temp);data.score[2]=atof(temp);
printf("物理成绩:");
gets(temp);data.score[3]=atof(temp);
printf("化学成绩:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(&data,sizeof(data),1,fp);
printf("继续?y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen("s_score.txt","rb+"))==NULL)
{
printf("找不到文件.\n");
exit(0);
}
for(i=0;i<=1000;i++)
{
if((fread(&info[i],sizeof(info[i]),1,fp))!=1)    还有这里的这句不太懂  sizeof(info【1】)是什么意思?  这里的i和j代表什么
break;
}
printf("\n学号  名字   语文   数学   英语   物理 化学 总分\n");
for(j=0,k=1;j<i;j++,k++)
{
info[j].mingci=k;
printf("%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n",info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}

void xiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("打不开文件.\n");
exit(0);
}
printf("\n输入修改学号:");
scanf("%d",&i); getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);               atoi是什么意思     这里为什么要将atoi。。。。赋给j呢
if(j==i)
{
printf("学号 :%s\n名字:%s\n",data.xuehao,data.mingzi);
printf("输入名字:");
gets(data.mingzi);
printf("语文成绩:");
gets(temp);data.score[0]=atof(temp);
printf("数学成绩:");
gets(temp);data.score[1]=atof(temp);
printf("英语成绩:");
gets(temp);data.score[2]=atof(temp);
printf("物理成绩:");
gets(temp);data.score[3]=atof(temp);
printf("化学成绩:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];

} fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);                       这里为什么要用fseek函数呢
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);
}

fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\n打不开文件.\n");
exit(0);
}
printf("\n输入查看学号:");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf("学号:%s 名字:%s\n语文:%f\n 数学:%f\n 英语:%f\n 物理:%f\n 化学:%f\n ",data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}

void shanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("\n打开 score.txt 失败!");
getch();
exit(0);
}
printf("\n输入要删除的id:");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{

printf("任意键删除.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");                                remove和rename是干什么的
rename("temp.txt","s_score.txt");
printf("删除成功!\n");
printf("任意键返回.");
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
window(1,1,99,99); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr();
printf("*************welcome to use student manage******************\n");
printf("*************************menu********************************\n");
printf("* ========================================================= * \n");
printf("* 1>输入 2>修改 * \n");
printf("* 3>删除 4>查找 * \n");
printf("* 5>显示 6>退出 * \n");
printf("* * \n");
printf("* --------------------------------------------------------- * \n");
printf(" 请选择(1-6):");
ch=getch();
switch(ch)
{
case '1':shuru();break;
case '2':xiugai(); break;
case '3':shanchu(); break;
case '4':chazhao(); break;
case '5':xianshi(); break;
case '6':exit(0);
default: continue;
}
}
}
希望各位给个详细解释 在线等 谢谢大家了
搜索更多相关主题的帖子: 解释 
2008-11-10 20:12
phoenixkld
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-10
收藏
得分:0 
直接用sizeof求:sizeof(struct score)就行了;
结构体的大小其实很好算,int型一般是4个字节,float型一般是8个字节吧,char类型是1个字节,自己加一下吧。
紧接在定义的结构体后的是结构提变量,那个info[1000],是个结构体数组。
2008-11-10 23:28
快速回复:几个小问题 ,求个解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013856 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved