如何在C编程中检查输入是否等于预设值?
我正在写一个程序,你可以让别人登录。但当我输入的id和密码等于预设值时,我无法使其成功打印登录如何在C编程中检查输入是否等于预设值?,c,codeblocks,C,Codeblocks,我正在写一个程序,你可以让别人登录。但当我输入的id和密码等于预设值时,我无法使其成功打印登录 int main() { int id,pass,idC=0,passC=0,i,myid,mypass,tries=1; myid = 10082612; password = 123456; printf("**LOG IN**\n\n"); printf("ID: "); scanf("%d", &id); printf("Password: "); scanf("%d
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1;
myid = 10082612;
password = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
while(id != 0){
id /= 10;
idC++;
}
while(pass!= 0){
pass /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==mypass){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
这就是我写的。这是因为您正在丢失
id
和pass
的原始值,原因是:
while(id != 0){
id /= 10; //THIS PART
idC++;
}
while(pass!= 0){
pass /= 10; // AND THIS PART
passC++;
}
要避免这种情况,您可以:
int idCopy = id;
int passCopy = pass;
//and then do
while(idCopy != 0){
idCopy /= 10;
idC++;
}
while(passCopy!= 0){
passCopy /= 10;
passC++;
}
//and use the original values of id and pass like in your code .
您应该将idC和passC初始化为1,因为对于8位数字,循环仅为真7次,以此类推
int idC = 1,passC = 1;
检查下面的代码。在代码中,您正在更新id和pass值。这就是您无法成功登录的原因
#include <stdio.h>
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1;
myid = 12345678;
int password = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
int temp=id;
while(temp != 0){
temp /= 10;
idC++;
}
temp=pass;
while(temp!= 0){
temp /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==password){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
#包括
int main()
{
int-id,pass,idC=0,passC=0,i,myid,mypass,trys=1;
myid=12345678;
int密码=123456;
printf(“**登录**\n\n”);
printf(“ID:”);
scanf(“%d”和&id);
printf(“密码:”);
scanf(“%d”和“通过”);
int temp=id;
while(温度!=0){
温度/=10;
idC++;
}
温度=通过;
while(温度!=0){
温度/=10;
passC++;
}
如果(idC==8&&passC==6 | | idC==7&&passC==6){
if(id==myid&&pass==password){
printf(“成功登录”);
}
否则{
printf(“未知ID”);
}
}
否则如果(idC!=8&&passC==6 | | idC!=7&&passC==6){
printf(“学生ID应为7或8位,请重试”);
}
否则如果(idC==8&&passC!=6 | | idC==7&&passC!=6){
printf(“请输入6位pin”);
}
}
问题是id和pass的值在while之后发生了变化。谢谢你的帮助。这是解决问题的方法。再次感谢
#include <stdio.h>
#include <stdlib.h>
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1,idCopy,passCopy;
myid = 1234567;
mypass = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
idCopy = id;
passCopy = pass;
while(idCopy != 0){
idCopy /= 10;
idC++;
}
while(passCopy!= 0){
passCopy /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==mypass){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
#包括
#包括
int main()
{
int-id,pass,idC=0,passC=0,i,myid,mypass,trys=1,idCopy,passCopy;
myid=1234567;
mypass=123456;
printf(“**登录**\n\n”);
printf(“ID:”);
scanf(“%d”和&id);
printf(“密码:”);
scanf(“%d”和“通过”);
idCopy=id;
passCopy=通过;
while(idCopy!=0){
idCopy/=10;
idC++;
}
while(passCopy!=0){
密码副本/=10;
passC++;
}
如果(idC==8&&passC==6 | | idC==7&&passC==6){
如果(id==myid&&pass==mypass){
printf(“成功登录”);
}
否则{
printf(“未知ID”);
}
}
否则如果(idC!=8&&passC==6 | | idC!=7&&passC==6){
printf(“学生ID应为7或8位,请重试”);
}
否则如果(idC==8&&passC!=6 | | idC==7&&passC!=6){
printf(“请输入6位pin”);
}
}
只要使用如果(id==myid&&pass==mypass)
就可以了,密码是什么?您在此处发布的代码未编译。在代码中,您正在更改用户输入的id
和pass
(id/=10;
和pass/=10;
)。当while循环中断时,它们的值始终为零,因此这就是为什么if(id==myid&&pass==mypass)
条件失败的原因。要更正它,请将其存储在不同的变量中,然后继续。@MichaelWalz-显然,密码是:password=123456代码>在您的双循环通过和id
将成为0FYI后,在确定另一个答案为已接受后,您几乎没有必要添加您自己的答案,除非它清楚地为讨论添加了一些持久的相关性。在这种情况下,我不确定它是否会。但是,由于回答的问题没有完全解决您的问题,并且该答案的海报让您有责任修复它,(没问题,您可以进行编辑…)将您自己的答案标记为已接受。我想在您的问题中添加编辑,如果我含糊不清,我很抱歉。如果答案没有指出错误,我就可以记下答案,而不是匿名投票。使用while(idCopy!=0){idCopy/=10;idC++;}
和id==0
,结果是idC==0
。我希望是1。考虑<代码> {{}}(IdPosix!=0)< /代码> @ RahulBharadwaj,我投了你的票吗?如果我有,对不起,我不是故意的,我真的不知道如何使用这个网站。我能解开它吗?对不起。@ryker对不起,我对这个网站很陌生,不知道答案和投票是如何运作的。很抱歉我想我甚至误投了一个真正帮助我的人的票。