[英]scanf requiring input on multiple lines
我已經編寫了這個小程序來計算條形碼的校驗位。 基本上,它是要取第一個數字,然后是2組5位數字,並對它們進行一些基本的算術運算。 當輸入第一組5位數時,我嘗試將它們全部輸入一行,如下所示:
>Enter the first group of 5 digits: 12345
但是,它只計算1並丟棄其余數字。 為了使程序能夠給出正確的輸出,我必須輸入如下數據:
>Enter the first group of 5 digits: 1
>2
>3
>4
>5
然后才提示我輸入第二組5位數字。 我已經嘗試了許多不同的方法,例如在scanf()函數的說明符之間放置空格,但這沒有用。
有沒有人有任何解決方案,這樣我就可以在同一行輸入中輸入所有5位數字?
碼:
#include <stdio.h>
int main(void)
{
int d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, first_sum, second_sum, chk_dig;
printf("Enter the first (single) digit: ");
scanf("%d", &d1);
printf("\nEnter the first group of 5 digits: ");
scanf("%d%d%d%d%d", &d2, &d3, &d4, &d5, &d6);
printf("\nEnter the second group of 5 digits: ");
scanf("%d%d%d%d%d", &d7, &d8, &d9, &d10, &d11);
first_sum = d1 + d3 + d5 + d7 + d9 + d11;
second_sum = d2 + d4 + d6 + d8 + d10;
chk_dig = 3 * first_sum + second_sum;
printf("\nCheck digit: %d", 9 - ((chk_dig - 1) % 10));
return 0;
}
謝謝!
如果要掃描彼此相鄰的5個單獨的1位數字,請告訴scanf()
您需要1位數字:
if (scanf("%1d%1d%1d%1d%1d", &d2, &d3, &d4, &d5, &d6) != 5)
…some sort of format error, or EOF perhaps…
在兩個輸入上都可以正常工作:
1 2 3 4 5
12345
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.