【发布时间】:2020-12-11 15:29:16
【问题描述】:
我正在编程一个锁,你必须在键盘中插入一个 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() 函数逐个字符地比较两个字符串,所以有人能解释一下为什么我必须以否定的方式使用它,而不是初始密码和用户在键盘匹配时按下的密码吗?
【问题讨论】:
-
有些人写
if (strncmp(...) == 0)。有很多函数在成功时返回0,所以眼睛习惯了看到== 0。