我是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/

10-10 16:36