| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 350 人关注过本帖
标题:帮忙看一下错在哪里?输入后只能存一组数据,而且也读不出??
只看楼主 加入收藏
aa456123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-6-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
帮忙看一下错在哪里?输入后只能存一组数据,而且也读不出??
#include<stdio.h>
#include<string.h>
#define N 100
struct stu{
char num[10];
char name[10];
char qq[10];
char sex[10];
char day[10];
}stu[50];

int m=1;

void input()
{ FILE *fp;
int i;
void menu();
printf("输入待录入的学生数:");
scanf("%d",&m);
while(m>N)
{
printf("个数太多,重新输入,推出请输入\n");
scanf("%d",&m);
if(m==0)

void menu();
}

printf("输入学生信息(学号   姓名    qq     性别   出生年月)\n");
  if((fp=fopen("a.txt","wb"))==NULL)
 {
  printf("cannot open file\n");
  return;
 }
for(i=0;i<m;i++)
{
printf("请输入学号:");
scanf("%s",&stu[i].num);
printf("请输入名字:");
scanf("%s",&stu[i].name);
printf("请输入qq号:");
scanf("%s",&stu[i].qq);  
printf("请输入性别:");
scanf("%s",&stu[i].sex);
printf("请输入出生年月:");
scanf("%s",&stu[i].day);
fwrite(&stu,sizeof(stu[i]),1,fp);
 fclose(fp);
}
printf("输入完毕\n");
menu();
}
void del()
{
    int i,j;
    char ch;
    char snum[10];
    printf("请输入学号:");
    scanf("%s",snum);
    for(i=0;i<m;i++)
        if(strcmp(snum,stu[i].num)==0)
            break;
            printf("学号   姓名\n");
            printf("%-10s %-10s",stu[i].num,stu[i].name);
        printf("找到这个学生,确定删除?(y/n)");
        scanf("%c\n",&ch);scanf("%c",&ch);
        if(ch=='Y'||ch=='y')
        {    for(j=i;j<m;j++)

                stu[j]=stu[j+1];
                    m--;
        FILE *fp;
        if((fp=fopen("a.txt","w"))==NULL)
            {
             printf("cannot open file\n");
              return;
        }

        fwrite(&stu,sizeof(stu[i]),1,fp);
 fclose(fp);

            printf("删除成功!\n");

        }
            else
            {
              return;
            }
}


void print()
{
    int i;
void menu();
FILE *fp;
  if((fp=fopen("a.txt","r"))==NULL)
 {
  printf("cannot open file\n");
  return;
 }
  
      printf("学号   姓名    qq     性别   出生年月\n");
for(i=0;i<m;i++)
{
    fread(&stu[i],sizeof(struct stu),1,fp);
printf("%-8s%-8s%-8s%-8s%-8s\n",stu[i].num,stu[i].name,stu[i].qq,stu[i].sex,stu[i].day);
}
fclose(fp);

menu();
}

 
void shut()
{
printf("谢谢使用本系统。");

}


void menu()
{
int key;

printf("\n*****学生信息管理系统*****\n");
printf("----------------------------------\n");
printf("1. 录入学生信息\n");  
printf("2. 按学号删除信息\n");
printf("3. 显示学生信息\n");
printf("4. 退出系统\n");
printf("请输入key;");
scanf("%d",&key);
switch(key)
{
case(1):
input();
break;  

case(2):
del();
break;
case(3):
print();
break;
case(4):
shut();
break;
default :
printf("你输入有误。");
break;
}
}


void main()
{
menu();
}
搜索更多相关主题的帖子: cannot 姓名 
2011-06-07 15:12
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
收藏
得分:10 
void input()
{ FILE *fp;
int i;
void menu();   //什么意思?
printf("输入待录入的学生数:");
scanf("%d",&m);


2011-06-07 21:01
wavewind
Rank: 3Rank: 3
来 自:浙江
等 级:论坛游侠
帖 子:34
专家分:101
注 册:2011-5-13
收藏
得分:10 
printf("输入学生信息(学号   姓名    qq     性别   出生年月)\n");
  if((fp=fopen("a.txt","wb"))==NULL) //创建一个只写二进制文件。用“w”打开的文件只能向该文件写入。 若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
其实也就是说,你在执行一次文件关闭后,如果再打开的话,有的内容已经被删除。
{
  printf("cannot open file\n");
  return;
}
for(i=0;i<m;i++)
{
printf("请输入学号:");
scanf("%s",&stu[i].num);
printf("请输入名字:");
scanf("%s",&stu[i].name);
printf("请输入qq号:");
scanf("%s",&stu[i].qq);  
printf("请输入性别:");
scanf("%s",&stu[i].sex);
printf("请输入出生年月:");
scanf("%s",&stu[i].day);
fwrite(&stu,sizeof(stu[i]),1,fp);
fclose(fp);      //程序运行到这里的时候,文件已经被你关闭,也就是文件

                   //中只存入 了 一次循环的数据,也就是一组数据
}
printf("输入完毕\n");
menu();
}
2011-06-08 09:24
wavewind
Rank: 3Rank: 3
来 自:浙江
等 级:论坛游侠
帖 子:34
专家分:101
注 册:2011-5-13
收藏
得分:0 
void shut()
{
printf("谢谢使用本系统。");

}

这里你只是形式上的一个结束程序,并没有执行退出,建议加上exit语句
2011-06-08 09:29
aa456123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-6-7
收藏
得分:0 
谢谢你们,非常感谢
2011-06-08 09:34
快速回复:帮忙看一下错在哪里?输入后只能存一组数据,而且也读不出??
数据加载中...
 
   



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

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