ERORR:指针和整数之间的警告比较

时间:2016-02-01 09:52:39

标签: c compiler-errors

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

请帮忙给我警告说:指针和整数之间的警告比较为什么????? 有什么不对?

  

指针和整数之间的警告比较   与字符串文字的比较导致未指定的行为

2 个答案:

答案 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;
}