#include <stdio.h>
int main()
{
int user,pass;
printf("New Username:\n");
scanf("%d",&user);
printf("New Password:\n");
scanf("%d",&pass);
printf("Type your username:\n");
scanf("%d",&user);
if ("%d"==&user)
{
printf("Username is good !!!!");
}
else
{
printf("Username is not good");
}
printf("type your password:\n ");
scanf("%d",&pass);
if ("%d"==pass)
{
printf("The password is good");
}
else
{
printf("The password is not good");
}
return 0;
}
请帮忙给我警告说:指针和整数之间的警告比较为什么????? 有什么不对?
指针和整数之间的警告比较 与字符串文字的比较导致未指定的行为
答案 0 :(得分:1)
if ("%d"==pass)
将字符串文字与整数进行比较?为什么?这是没有意义的。您的整数传递永远不能等于字符串文字"%d"
({'%','d','\0'}
btw)
那张支票完全超级。
if ("%d"==&user)
更糟糕的是,那就是你警告的来源。您正在将指向int
的指针与字符串文字进行比较。
如果你想检查你的用户名和密码是否实际上是整数,你不需要这样做,因为scanf
会为你做这件事。
答案 1 :(得分:0)
有两个错误。
if ("%d"==pass)
在这里,您要将pass变量的值与字符串文字进行比较。这是错误的,也不是必需的。
和
if ("%d"==&user)
在这里,您要将user
变量的addrers与字符串文字进行比较。这是错误的,也不是必需的。
我尝试将您的代码修改为某种级别。我想这就是你想要的。
对于用户名,您需要使用char array
来存储名称,并使用strcmp
来匹配它们。
#include <stdio.h>
int main()
{
int user_org,pass_org;
int user,pass;
// First store original username and password
printf("Orignal Username:\n");
scanf("%d",&user_org);
printf("Original Password:\n");
scanf("%d",&pass_org);
// Check for username
printf("Type your username:\n");
scanf("%d",&user);
if (user_org == user)
{
printf("Username match");
}
else
{
printf("Username is incorrect");
}
// check for password
printf("type your password:\n ");
scanf("%d",&pass);
if (pass_org == pass)
{
printf("The password match");
}
else
{
printf("The password is not correct");
}
return 0;
}