Кто-нибудь знает, почему мой код печатает «Неверный PIN-код введен» после инструкции if
вместо «Исправлен PIN-код»? Когда я изменяю заявление if
на (input_pin != current_pin)
, он работает.Сравнение содержимого массивов в C
#include <stdio.h>
#define PIN_SIZE 4
main()
{
int input_pin[PIN_SIZE];
int current_pin[PIN_SIZE] = {1,2,3,4};
int i;
for(i = 0; i < PIN_SIZE; i++)
{
printf("Enter PIN %d: ", i+1);
scanf("%d", &input_pin[i]);
}
if(input_pin == current_pin)
{
printf("\nCorrect PIN entered.\n");
}
else
{
printf("\nIncorrect PIN entered!\n");
}
flushall();
getchar();
}
Пожалуйста, 1. Используйте заголовок, отражающий ваш вопрос, а не текущее отсутствие просветления. 2. Используйте правильное форматирование (для кода, но также и для текста - не используйте выделение жирным шрифтом). 3. Удалите весь пух (оправдания, благодарность, приветствия). 4. Поработайте над разъяснением вашего фактического вопроса. – Deduplicator
попробуйте найти SO для «Compare C array». Я думаю, вы обнаружите, что пытаетесь проверить, имеют ли две переменные одну и ту же ссылку, а не сравнивают содержимое массивов. – DeanOC
Вы сравниваете два расположения (указатели) массива, которые в этом случае всегда разные. Если вы измените свой оператор в if, это тоже не сработает, потому что будет принят неверный вывод. – eckes