Anik Shahriar Anik Shahriar - 26 days ago 7
C Question

Character constant too long for it's type (fgets)

void verification(){

char pass[50];

printf (" Enter Password : ");
fgets(pass, 50, stdin);

if (pass != 'aaanc6400'){ \\ Warning message in here

printf ("\n Invalid Password.. Please enter the correct password. \n\n");

verification();

}

info();

}


When i compile the program, on the marked line it shows warning that "Character constant too long for it's type" and also "Comparison between pointer and integer". And then when i run the code and enter the correct password, it still prints that the password is wrong. What am i doing wrong?

Answer

You need to:

  • Initialise char pass[50] = "";
  • Remove \n from fgets by pass[strlen(pass) - 1] = '\0'; (after fgets) - that helps you to compare string later on.
  • if (pass != 'aaanc6400') this one is totally wrong. Use strcmp for string comparison, and double quote for string "aaanc6400"