這是我的atm機器代碼。它首先詢問用戶的卡號,然後Pin和然後到期日期。不能正確打印整個陣列
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'如果我使用這個,是不是我聲明瞭兩次具有相同名稱的數組? –
@UmairJavaid沒有數組聲明。函數strcspn實際上在數組中找到了新行字符所在的位置,並將其用作將替換值'\ 0'的數組元素的索引。 –
哦,好的。我的錯。非常感謝你的幫助 –