一个关于gets函数的奇怪问题 无人能解··
#include<stdio.h>typedef struct worker
{
int num;
char name[20];
char sex;
int age;
}Linklist;
void main()
{
void menu();
void ccode();
menu();
}
void menu()
{
int choose,flag=0,i;
char *p1;
int *p2; /*密码 和 标志 都改变其值*/
char code[10],change[]="520",ch;
p1=change;
p2=&flag;
Start: /*为了让密码 不在重置*/
printf(" Workers Information Query System\nPlease give the code to enter the System:");
for(;flag==0;)
{
for(i=0;(ch=getch())!='\r'&&i<10;i++) /*回车是/r 换行才是/n*/
{
code[i]=ch;
printf("*");
}
code[i]='\0'; /* 记住在这里的后面加上一个结束的标识符*/
if(strcmp(code,p1)==0) /*这里用不用指针都没有关系*/
{
flag=1;
}
else
printf("\nSorry! the code you give is wrong,please re-enter it as confirmation:\n");
}
system("cls");
printf(" Workers Information Query System\nPlease choose the survice as follow:\n 1.Information for all workers\n 2.Workers search\n 3.Change the information of workers\n");
printf(" 4.Adding workers\n 5.Password reset\n 6.Dismiss workers\n 7 End");
scanf("%d",&choose);
switch(choose)
{
case 5:ccode(p1,p2);goto Start;
}
}
void ccode(char *p1,int *p2)
{
char old[10], new[10];
printf("Please input the old password:");
/*gets(old);*/
scanf("%s",old);
if(strcmp(old,p1)!=0)
{
menu(); /*如果输入不正确 就要返回菜单 这个设置 应该在完善一下*/
}
else
{
printf("Please input the new password:");
gets(new);
strcpy(p1,new);
*p2=0;
}
printf("Succee!\n");
system("pause");
system("cls");
}
首先这是一个职工修改密码的系统 (暂时只有修改密码)
然后再修改密码的地方gets函数居然不起作用 系统并没有叫输入字符 直接就走过gets函数。貌似自动给了0; 后来给了将第一个gets换成了scanf函数才可以的
第2个gets还没有换 请问这是什么原因呢