我正在努力寻找答案:我希望能够控制信用卡号码(让我们说#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;
}
答案 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
中的字符串,可以像在您的问题中一样访问该字符串。显然,字符串的最大长度可以作为格式字符串中的参数给出。