检查 char 数组的前两个元素并发送到一个整数
Check two first elements of char array and send to an integer
我将虚构的信用卡号存储为 char 数组和 long long。为了检查卡是 VISA、MASTER 还是 AMEX,我必须检查这个 long long 或这个字符串的前两位数字。
万事达卡号码均以 51、52、53、54 或 55 开头
美国运通号码均以 34 或 37 开头
签证号码全部以4
开头
知道怎么做吗?
我试着输入两个单独的整数,稍后用 if/else 检查,但我想可能有更好的方法来解决这个问题。
感谢您的帮助。
您可以在 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 => american express,4 => visa)
我将虚构的信用卡号存储为 char 数组和 long long。为了检查卡是 VISA、MASTER 还是 AMEX,我必须检查这个 long long 或这个字符串的前两位数字。 万事达卡号码均以 51、52、53、54 或 55 开头 美国运通号码均以 34 或 37 开头 签证号码全部以4
开头知道怎么做吗? 我试着输入两个单独的整数,稍后用 if/else 检查,但我想可能有更好的方法来解决这个问题。 感谢您的帮助。
您可以在 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 => american express,4 => visa)