2016-11-19 44 views
-3

我有信用卡虛擬信用卡號碼存儲爲字符數組和long long。爲了檢查這張卡是VISA,MASTER還是AMEX,我必須檢查這個長長的或這個字符串的前兩位數字。 萬事達卡號全部用51,52,53,54,或55 美國運通數字都開始用34或37 簽證名額全部用4檢查char數組的兩個第一個元素併發送到一個整數

任何想法就如何這樣做開始? 我試着把兩個單獨的整數,並檢查後/ if,但我想可能有更好的方法來解決這個問題。 感謝您的幫助。

+1

不要使用整數類型的卡號,留在陣列。首先,您將不得不將整數擴大回輸入的內容來檢查每個數字。另一種情況是,如果卡號以一個或多個「0」開始,它們將在整數轉換中丟失。請發佈顯示問題的[Minimal,Complete和Verifiable示例](http://stackoverflow.com/help/mcve)。顯示輸入,預期輸出和實際輸出的一些示例。 –

+0

明白了,葉片。謝謝您的幫助。 –

回答

1

您可以使用字符數組就像一個功能:

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 =>主,3 =>美國運通,4 =>簽證)

+0

完美,Artiz工作。欣賞它。 –

相關問題