簡體   English   中英

scanf需要多行輸入

[英]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

您可以使用空格來分隔數字而不是換行。

1 2 3 4 5

如果將數字12345在一起,那么程序應該如何知道您不是指實際數字12,345

您應該閱讀有關scanf()如何工作的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM