这个程序怎莫改

来源:百度知道 编辑:UC知道 时间:2024/05/20 05:00:21
#include <string.h>
#include <stdio.h>
main()
{
int s=0,i;
char a[20];
printf("\nEnter");
a[s]=getch();
while(a[s] != '\r'){
printf("*");
s++;
a[s]=getch();
}
a[s] = '\0';
if(! strcmp (a,"12345")) {printf("welcome!");
system("pause");}
else
for(i=2;i<=3;i++)
{printf("No\n");
printf("Enter");
a[s]=getch();
while(a[s]!='\r'){
printf("*");
s++;
a[s]=getch();
}
a[s]= '\0';
if(! strcmp (a,"12345")) {printf("welcome!");
system("pause");
exit(0);}
}
exit(0);
}
这个程序中有一点错误
比如 我第一次输入正确的数据 显示 welcome!这没错
但如果我第一次输入错误数据,第二三次任意有一次输入正确数据电脑还显示 “no enter”必须要三次全输完才能退出 这时怎末回事,怎莫改
我明明在程序中作了交代不应该出现这种情况啊

在输入错误以后,你的a[s]并没有被清空!s也没有清零,所以读入的数据都在a后面直接加上去了,也就永远都会不正确! 做出如下修改:
for(i=2;i<=3;i++)
{
s = 0;/* 加上s = 0,使输入从头开始 */
printf("No\n");
printf("Enter");
a[s]=getch();
while(a[s]!='\r'){
printf("*");
s++;
a[s]=getch();
}