我是C编程的新手,您已经可以通过我的问题进行猜测了。我正在尝试输入4位数的有效密码,例如9999.但是,如果第一个数字为零,即0111,则我程序中的逻辑不会递增计数器。简而言之,我坚持如何解释以零开头的引脚。我可以向用户添加一些错误检查,指出该引脚不得以零开头,但如果可能的话,我不想诉诸于此。
这是我到目前为止的内容:
/*
Program name: Count num of digits
*/
#include <stdio.h>
#define PIN_LENGTH 4
int main()
{
int pin = 0;
int counter = 0;
printf("Enter your PIN: ");
scanf("%d", &pin);
while(pin != 0)
{
pin = pin / 10;
counter++;
}
if(counter == PIN_LENGTH)
{
printf("Valid pin of %d digits\n", counter);
}
else
{
printf("Invalid pin of %d digits\n", counter);
}
return(0);
}
如您所见,我将引脚号除以10,然后将新值分配给引脚。
9999除以10 = 999(整数会舍弃小数部分),计数器= 1
999除以10 = 99(int截断小数部分),计数器= 2
99除以10 = 9(int会截断小数部分),而counter = 3
9除以10 = 0(int截断小数部分),而counter = 4
然后,将其与符号名称值4进行比较,如果它们的长度相同,则说它是有效的,如果不是,则说无效。
但是我要如何计算以零开头的引脚呢?
最佳答案
正如@Olaf所说,将图钉作为字符串读取。如下定义您的引脚:char pin[PIN_LENGTH + 1]
,其中'\ 0'字符为'+1'。然后在scanf中,您可以说scanf("%4s", pin)
来读取4个字符。最后,当您想将这些值向下拖动时,您可以简单地从任意位置读取的字符中减去“ 0”,然后将其视为整数。
关于c - 引脚从C的零开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40320456/