首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【C的一道题】关于成绩管理系统的输入名字一点小疑点,求解答。

2013-12-04 
【C的一道题】关于成绩管理系统的输入名字一点小问题,求解答。。这是为什么啊? 求解释求大神各种求。。。C结构体

【C的一道题】关于成绩管理系统的输入名字一点小问题,求解答。。


这是为什么啊? 求解释求大神各种求。。。 C 结构体 文件
[解决办法]
可能有问题的地方,纯属个人意见,仅供参考:

struct student
{
int number;                   //学号
float score[3];               //分数
char name[100];               //名字,这么长的名字,有点多了吧?
};
void input(struct student *parr,int len)        //函数功能:手动输入学生信息或者选择读取文件
{
char ch;
printf("请选择你要录入学生信息的方式:1、手动输入  2、读取磁盘文件\n");
getchar();      //这个getchar()是干嘛的,等待键盘输入的方式选项?如果是为什么没有赋给ch
scanf("%c",&ch);//这个是吃掉输入流中的'\n'换行符?还是,这才是等待键盘输入?
                        //不管这个scanf是做什么用的,他都需要等待键盘输入 + Enter
                        //而这个Enter会作为换行符留在输入流中,如果刚好选择的是手动输入'1'
                        //则这个换行符直接遇到了scanf("%s",parr[i].name);,这又使
                        //scanf字符串返回,parr[0].name为空
switch(ch)
{
case '1':
int i;
FILE *fp;
fp=fopen("D:\\student.dat","w");//fopen("", "w")本身就会在没有则个文件的时候
                                                //创建一个新文件,并返回对应的文件结构指针
                                                //下面再一次fopen("", "w")是干嘛?
if((fopen("D:\\student.dat","w"))==NULL)
{
printf("创建文件失败,请重新创建!");
exit(0);
}
printf("已创建成功!\n");
for(i=0;i<len;i++){
printf("请输入第%d个学生信息:\n",i+1);
printf("姓名:");
scanf("%s",parr[i].name);   //这里建议写作scanf(" %s",parr[i].name);
printf("学号:");
scanf("%d",&parr[i].number);
printf("高等数学成绩:");
scanf("%f",&parr[i].score[0]);
printf("课程设计成绩:");
scanf("%f",&parr[i].score[1]);
printf("大学英语成绩:");
scanf("%f",&parr[i].score[2]);
fwrite(&parr[i],sizeof(struct student),1,fp);
}
printf("文件已保存!");
fclose(fp);
case'2':

热点排行