错误各种多……随便一看就找到N个……
1、
static int count;//用来控制数据的下标.因保证数据不丢失.用到静态变量
查查static的用法吧……
这里static根本就不是把count定义为静态变量作用。既然count是声明在函数体外的,那么count就是具有文件作用域的变量,而所有文件作用域的变量都是具有静态存储时期的。
这个static的作用是count这个变量具有内部链接。
2、
password数组只分配了6个元素的位置,随便多输出几个字符就会越界,而你又用scanf()这种本身就不安全(尤其对于字符串)的函数读取输入,极容易造成溢出。
3、
password函数里那个for(),只有判断条件……那为什么不用while
4、
for,while等循环里连续读入scanf(),又不手动清缓冲区……,如果有一个输错了,那么后面就别想输了。如果是scanf("%d", &a); scanf("%lf", &b);这样的话,后一个scanf大部分时候就被无视了。
5、
mamenu函数里
switch分支选择2的话,break只跳出了switch循环,但程序还在do-while(1)的死循环中
6、
camenu函数里
1):你的selectitem的定义不是放在函数最开头,而是放在printf等语句后面,这是不符合C语言规范的。
2):不懂你的while(1);有什么用……
7、从
struct student datainput()//输入
开始,你的函数实参列表都没有写void,
8、
还是
struct student datainput()//输入
你既然这里是
scanf("%d",&studn.no);
而又不是链表实现
后面的函数又是
scanf("%d",&studn[i].no);
那你怎么统一起来……
而且要么你在定义结构体的时候用
struct A {
int xxx;
double yyy;
char zzz;
}stu[100];
要么就用文件保存好struct,然后每开一个函数读一次文件
再要么就传值或者传struct的地址去各个函数
你后面struct student stu[100];struct student test[100];等等根本都没有关联的……
9、delete函数,这样写的话,最后的两个结构体的数据是一样的,你没有做处理。