C程序中如何判断输入是否等于预设值?

How to check if input is equal to preset value in C programming?

我正在编写一个允许某人登录的程序。但是当我输入的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", &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");
 }


}

这是我写的。

这是因为您失去了 idpass 的原始值,原因是:

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");
 }


}

问题是 id 和 pass 的值在一段时间后发生了变化。谢谢您的帮助。这是解决方法。再次感谢!!

#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");
 }


 }