比较 C 中数组的内容

标签 c arrays

有谁知道为什么我的代码打印“输入的 PIN 码不正确” 在 if 语句之后,而不是“输入正确的 PIN 码”?当我将 if 语句更改为 (input_pin != current_pin) 时,它就起作用了。

#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();
}

最佳答案

if(input_pin == current_pin) 正在比较两个整数数组。在 C 语言中,数组在内部表示为指针。这就像比较两个 int * 变量一样。由于 input_pincurrent_pin 实际上是不同的数组,因此这两个指针永远不会相等。

要完成您尝试进行的比较,您需要单独比较每个 PIN 的每个元素。

关于比较 C 中数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899129/

相关文章:

c - 通用 MPLAB X、XC8 和 C。跨函数和源文件使用变量

c++ - C/C++ : print contents of (config) header file

c - 如何强制将 SIGILL 发送到我的程序?

arrays - iOS - 字典中的顺序问题

c - 在C中对文件中的 float 进行排序

c - 这到底是做什么的? [*(字符*)p1]

c - 文件指针无缘无故地过期了

android - 如何使用 edittext 验证 json 数组

java - 从 Object 类型的数组调用方法

arrays - 按数字过滤数组?