2016-11-19 4 views
-3

私は、char配列として格納されたクレジット架空のクレジットカード番号を持っています。カードがVISA、MASTER、AMEXのいずれかであるかどうかを確認するために、この長い列かこの文字列の最初の2桁をチェックする必要があります。 マスターカード番号はすべて、51、52、53、54で始まる、または55の アメリカン・エキスプレス番号すべてが、すべての4char配列の2つの最初の要素をチェックし、整数に送信

でそうする方法任意のアイデアを開始する34のまたは37 ビザ番号で始まりますか? 私は2つの別々の整数を入れて、後でif/elseでチェックしようとしましたが、これを解決する良い方法があるかもしれません。 助けてくれてありがとう。

あなたが好きなchar配列に機能を使用することができ
+1

カード番号に整数型を使用しないでください。アレイ。一つのこととして、整数を各桁を調べるために入力したものに戻さなければなりません。カード番号が1つ以上の「0」で始まる場合には、整数変換で失われます。問題を示す[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。入力、期待される出力、実際の出力の例を示します。 –

+0

入手しました。助けてくれてありがとう。 –

答えて

1

inline int starts_with(char *string, char *begin) 
{ 
    return strncmp(string, begin, strlen(begin)); 
} 

そして、ちょうど

if (starts_with(string, MASTER_1) || starts_with(string, MASTER_2) || etc.) 
{ 
    ... 
} 
else if (...) { 
    ... 
} 

などなど

た場合に定数

#define MASTER_1 "51" 
... 
#define MASTER_5 "55" 

に対してチェックあなたの場合あなたは最初の桁をオンにすることができます(5 =>マスター、3 =>アメリカンエクスプレス、4 =>ビザ)

+0

パーフェクト、Artizの仕事。感謝します。 –

関連する問題