我正在编程一个锁,在哪里解锁它你必须在键盘中插入一个 PIN 码。我有以下变量:
char password_init[4] = {'1', '2', '3', '4'}; //initial password
char password[4];
当用户按下键盘上的一个键时,该数字将存储在变量中password
,并且在用户按下 4 位数字后,将比较两个变量,以便访问或不访问锁。
我发现一种解决方案是使用 strncmp() 函数:
if (!(strncmp(password, password_init, 4))){
Serial.println("PIN Code correct");
}
这可行,但我不明白为什么我应该使用!(strncmo())
而不是strncmo()
. 如果我使用if (strncmp(password, password_init, 4))
结果将是不正确的 PIN 码。
该strncmp()
函数逐个字符地比较两个字符串,所以有人能解释一下为什么我必须以否定的方式使用它,而不是初始密码和用户在键盘匹配中按下的密码吗?