佳能mp288打印机警告:再帮我看看

来源:百度文库 编辑:高考问答 时间:2024/05/03 17:43:08
输入数据以后,用SEARCH函数找不到,总是“无资料”,帮帮忙,看看哪里错了
#include<stdio.h>
#include<string.h>

int max;
struct stu{
char num[8];
char name[8];
char sex[8];
char acemidy[8];
char type[8];
}stu[100];
create_list()
{ int i;
char cnum[8];
char cname[8];
char csex[8];
char cacemidy[8];
char ctype[8];
for(i=0;;i++)
{ printf("请输入 000 退出.\n");
printf("请输入学号:");
scanf("%s",cnum);
if(cnum[0]=='0'&&cnum[1]=='0'&&cnum[2]=='0') break;
printf("请输入姓名:");
scanf("%s",cname);
printf("请输入性别:");
scanf("%s",csex);
printf("请输入学院:");
scanf("%s",cacemidy);
printf("请输入类型:");
scanf("%s",ctype);
strcpy(stu[i].num,cnum);
strcpy(stu[i].name,cname);
strcpy(stu[i].sex,csex);
strcpy(stu[i].acemidy,cacemidy);
strcpy(stu[i].type,ctype);
max=i;
}
return(max);
}
void search_students()
{
char keynum[8];
int x,k,p=0;
printf("请输入 000 退出.\n");
printf("#请输入学号:");
scanf("%s",keynum);
{
for(x=0;x<=max;x++)
{if(keynum[0]=='0'&&keynum[1]=='0'&&keynum[2]=='0') break;

if(strcmp(stu[x].num,keynum)==0)
{printf("姓名:%s\n",stu[x].name);
printf("性别:%s\n",stu[x].sex);
printf("学院:%s\n",stu[x].acemidy);
printf("类型:%s\n",stu[x].type);
p++;}
}if(p==0) printf("无资料!\n"); /*!!!!!!*/
}
}

main(){
create_list() ;
search_students() ;
}
"晕!没问题的的!"
不可能啊,search_students() 一直是“无资料”显示不出数据

晕!没问题的的!

只是如果你输入0000 4个0的时候也会退出
if(cnum[0]=='0'&&cnum[1]=='0'&&cnum[2]=='0') break;
这样不会了
if(cnum[0]=='0'&&cnum[1]=='0'&&cnum[2]=='0'&&cnum[2]!='0') break;

首先,你这个程序Create_list() 里有一个BUG: 你定义的stu 数组有100个元素,但是你在处理数据输入时,并没有检查输入数据的个数,这样假如用户输入了101个数据,程序就会崩溃掉,因为你的程序向一个未知的内存区域写了数据。
除此之外,程序应该没问题,我在VC6下执行了一下,输入了一组数据,能够找到,你自己再试下。
我是来要分的。谢谢。