在C中一次将数字放入数组中

Putting numbers inside array at once in C

我正在努力寻找这个问题的答案:我希望能够控制信用卡号(比如“378282246310005”)是否满足特定条件(f.e。它是否以号码开头3).

我希望能够一次输入完整的数字,然后检查数字中的特定位置(f.e。每秒)。但是,我只是在一个接一个地输入它们时才设法将它们放入一个数组中,这很烦人:

int main()
{

   int user_input[5];
   int i;

   for(i=0;i<5;i++)
   {
      printf("Credit Card Number Digit %d\n",i+1);
      scanf("%d",(user_input+i));
   }

   if(user_input[0] == 5)
      printf("MASTERCARD\n");

   else
      printf("INVALID\n");

return 0;
}

我建议将一个字符串扫描到一个 char 的数组中,然后访问这个数组。该技术包含在此 Wikipedia article 中,可以在其中找到以下代码。

#include <stdio.h>

int main()
{
    char word[20];

    if (scanf("%19s", word) == 1)
        puts(word);
    return 0;
}

片段读取数组 word 中的一个字符串,可以像您的问题一样访问它。显然,字符串的最大长度可以作为格式字符串中的参数给出。

只需检查输入的每个数字并忽略任何非数字输入,例如

int main()
{
    int user_input[16];
    int digits = 0;

    while (digits < 16)
    {
        int c = getchar();         // get character
        if (c == EOF) break;       // break on EOF
        if (isdigit(x))            // if character is numeric
        {                          // convert it to int and append to user_input array
            user_input[digits++] = c - '0';
        }                          // (otherwise just ignore it)
    }

    if (digits > 0 && user_input[0] == 5)
    {
        printf("MASTERCARD\n");
    }
    else
    {
        printf("INVALID\n");
    }

    return 0;
}