我将信用虚拟信用卡号码存储为字符数组并且很长。为了检查卡是VISA,MASTER还是AMEX,我必须先检查这个长字段或该字符串的前两位数字。 万事达卡号码全部以51,52,53,54或55开头 美国运通号码全部以34或37开头 签证号码全部以4开头
知道怎么做吗? 我试图输入两个单独的整数,然后用if / else检查,但我想可能有更好的方法来解决这个问题。 谢谢你的帮助。
答案 0 :(得分:1)
您可以在char数组上使用函数,如:
inline int starts_with(char *string, char *begin)
{
return strncmp(string, begin, strlen(begin));
}
只需检查常数
#define MASTER_1 "51"
...
#define MASTER_5 "55"
带
if (starts_with(string, MASTER_1) || starts_with(string, MASTER_2) || etc. )
{
...
}
else if (...) {
...
}
等等。
如果你提到的案例是唯一的,你可以只打开第一个数字(因为5 => master,3 =>美国快递,4 =>签证)