これはatmマシンのコードです。まず、ユーザーにカード番号を入力して、ピンと有効期限を尋ねます。アレイ全体が正しく印刷されません。
char card_number[16];
memset(card_number,0,16);
char pin[4];
memset(pin,0,4);
char exp_date[5];
memset(exp_date,0,5);
printf("Enter Card number \n");
//scanf ("%s",&card_number);
fgets (card_number, 16, stdin);
printf("Enter pin\n");
//scanf ("%s",&pin);
fgets (pin, 4, stdin);
printf("Enter expiry date\n");
//scanf ("%s",&exp_date);
fgets (exp_date, 5, stdin);
char data[25];
memset(data,0,25);
char reply[25];
memset(reply,0,25);
int i = 0;
for(i=0;i<25;i++)
{
if(i<16)
{
data[i] = card_number[i];
}
if(i>=16 && i<20)
{
data[i] = pin[i-16];
}
if(i>=20 && i<25)
{
data[i] = exp_date[i-20];
}
}
printf("data: %s",data);
ピン入力がありません。これは、データ配列に格納されている最初の15文字を出力するだけです。他に何もない。私のコードの問題は何ですか?
card_number [strcspn(card_number、 "\ n")] = '\ 0'これを使用すると、同じ名前の配列を2回宣言していませんか? –
@UmairJavaid配列宣言はありません。関数strcspnは、実際には、改行文字がある配列内の位置を見つけ、値 '\ 0'の代わりになる配列の要素のインデックスとして使用されます。 –
よろしいですか?私の悪い。手伝ってくれてどうもありがとう –