请精通C/C++的达人进,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/25 12:36:51
麻烦帮我看看这段代码错在哪里,如果友人把它调试通了更好!谢谢啊!!!

# include <stdio.h>
int validate();

void show();

void studin();

int main()
{
char c1;

printf("请选择你要的操作:\na:学生信息录入;b:普通查询\n");

scanf("%c",&c1);

if(c1=='a')

void validate();//身份验证

else if(c1=='b')

void show();//进入查询

else

printf("操作错误!\n");
}

int validate()

{

char a[11]={"administer"};

char b[11];

char c[7]={"123456"};

char d[7];

printf("请输入你的用户名:");

scanf("%s",&b);

printf("请输入你的密码:");

scanf("%s",&d);

if ((!strcmp(a,b)) && (!strcmp(d,c) ))

printf("欢迎管理员

在函数调用处,使用函数,而不是申明,即:
void validate();
改为
validate();
其它所有的情况都做类似处理。

字符串调用scanf函数,如:
char a[10];
scanf("%s", a);
而不是:
scanf("%s", &a);
因为字符串变量名本身就是一个常量指针,另外为了避免字符串超过定义的长度,最好加以限制,如:
char a[10];
scanf("%9s", a);
这样即使用户输入, "helloworldhelloworld"超过长度10(最后一个是\0)也能正确处理,而不至于出现不可预测的情况。

在:
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
z中将其中的struct去掉,即:
if(fwrite(&stud[i],sizeof(student_type),1,fp)!=1)
因为studengt_type本身就是一个结构类型。

if(c1=='a')

void validate();//身份验证

else if(c1=='b')

void show();//进入查询
这里是函数调用要用validate();show();

scanf("%s",&b);
scanf("%s",&d);
b,d本来就是个地址了。
void save(); 都不知道那里来的。而且所在位子是函数调用吧,不是函数声明吧?
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) 这个是什么东西啊,不过我好久没有接触过C语言了,不清楚了。