В «С» число, которому предшествует 0, интерпретируется как восьмеричное число. Вот простой код, который поможет вам увидеть проблему:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int number = 42646;
int number_octal = 042646;
int pass = 0;
printf("Enter the PIN.\n");
scanf("%d", &pass);/*enter code here*/
/* Debug */
printf("Pass: %d\n", pass);
printf("Number: %d\n", number);
printf("number_octal: %d\n", number_octal);
if (pass == number)
{
printf("Correct\n");
}
else
{
printf("Invalid\n");
}
return 0;
}