用C语言做一个比较两个六位数的程序

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:32:16
我在模拟ATM程序,初学者,如果用SCANF输入密码时可以比较得出,但是用getch时就不能比较了,请问为什么?请大家帮我写一个让我参考一下。谢谢叻。
看看这个错在哪里叻。
main()
{ int i,j;
char a[7]="880407";
char b[7];
clrscr();
printf("Please input :");
for(i=0;i<6;i++)
{
b[i]=getch();
printf("*");
}

j=strcmp(a,b);
if(j<0) printf("密码错误");
else if(j>0) printf("\n密码错误");
else printf("\n密码正确");

}
请问如何才能输出正确的情况??假设原始密码是880407我想我输入之后验证。谢谢大家啦。!!

#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{ int i,j;
char a[7]="880407";
char b[7];
//clrscr();
printf("Please input :");
for(i=0;i<6;i++)
{
b[i]=getch();
printf("*");
}
b[6]='\0';
j=strcmp(a,b);
if(j!=0)
printf("\n密码错误");
else printf("\n密码正确");
}
加上b[6]='\0';就可以啊

你试试将a[7]和b[7]改为a[6]和b[6]看看。

或者880407改为880407\0,再将这个也改了char b[7]="\0";

for(i=0;i<6;i++)
{
b[i]=getch(); //这里输入6位字符
}
b[i]='\0'; //字符串必须以0结尾

因为字符串没有以0结束,所以程序认为字符串长度超过6位,那么两个字符串比较肯定会错误~~~~