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

时间:2015-01-05 13:36:59

标签: c arrays

我正在努力寻找答案:我希望能够控制信用卡号码(让我们说#37; 378282246310005')符合某些标准(fe do it从数字3)开始。

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

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;
}

2 个答案:

答案 0 :(得分:2)

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

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;
}

答案 1 :(得分:0)

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

#include <stdio.h>

int main()
{
    char word[20];

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

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