簡體   English   中英

警告:初始化使 integer 來自指針而無需強制轉換,即使我輸入正確的用戶和密碼,output 也只顯示其他部分

[英]warning: initialization makes integer from pointer without a cast and the output only shows else part even if I enter correct user and password

#include<stdio.h>
int main(){
    char user = "welcome";
    printf("Enter UserName \n");
    scanf("%s",&user);

    char pass = "hi";
    printf("Enter Password: \n");
    scanf("%s",&pass);

    if(user=="welcome" && pass == "hi"){
            printf("Login Successful");
    }
    else{
        printf("Retry");
    }
    return 0;
}

該程序要求輸入用戶名和密碼,然后檢查輸入是否正確並打印合適的語句。

但是,對我來說,即使輸入的數據正確,它也只顯示其他部分。

在此處輸入圖像描述

該程序完全錯誤。

在這些聲明中

char user = "welcome";

char pass = "hi";

您聲明了您試圖通過char *類型的表達式初始化的char類型的對象(用作初始值設定項的字符串文字被隱式轉換為指向其第一個元素的指針)。

相反,您需要聲明字符 arrays,您將在其中讀取用戶名和他的密碼。

例如

char user[10];
char pass[10];

scanf的調用可以如下所示

scanf("%9s", user);
scanf("%9s", pass);

在這個 if 語句中

if(user=="welcome" && pass == "hi"){

你正在比較指針。 相反,您需要比較字符串,例如

if( strcmp( user, "welcome" ) == 0 && strcmp( pass, "hi" ) == 0 ){

要使用 function strcmp ,您需要包含 header <string.h>

#include <string.h>

像這樣聲明用戶名和密碼字段:

char user[1024], pass[1024];

目前他們只能容納一個角色。 您可以將 1024 更改為您假設用戶輸入的最大字符數。 您還應該記住,字符串不能與user=="welcome"進行比較! 請改用string.h中的strcmp function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM