Проблема заключается в том, что ваша структура инициализируется восьмеричными (base-8) значениями, а не base-10.Когда вы scanf
, вы читаете в значении base-10, поэтому сравнение на равенство завершается неудачей.
02201002, "Ayush", 90,
02201000, "Raman", 1000,
01022001, "Hari", 50,
02103405, "Kiran", 12
0
перед числом указывает, что его следует интерпретировать как значение base-8вместо базы-10.Вы можете увидеть свою проблему, если запустите следующую маленькую программу и передадите ее 02201002:
#include <stdio.h>
int main(void)
{
int number = 02201002;
printf("number: %d\n", number);
scanf("%d", &number);
printf("number: %d\n", number);
return 0;
}
При выполнении программы это дает:
$ ./octal_test
number: 590338
02201002
number: 2201002