2017-04-03 92 views
-1

一個數字我看到下面的代碼工作:讀取一個整數,每次

int d1, d2, d3, d4, d5; 
printf("Enter group of five digits: "); 
scanf("%1d%1d%1d%1d%1d", &d1, &d2, &d3, &d4, &d5); 

但是,下面的代碼失敗:

int ar[5], counter = 0; 
printf("Enter number: "); 
while(counter < 5){ 
    scanf("%1d", &ar[counter]); 
    counter++; 
} 

在失敗的代碼中的數字都32767。爲什麼是這樣?

編輯:我剛剛在這裏給出了一個代碼片段。我正在嘗試K.N.King的C Programming中的練習問題:現代方法

我看到第二個代碼片段失敗,逐個打印出數組內容。

在這裏看到很多負面的反應,沒有任何解釋我應該如何構建我的問題根本沒有幫助。另外,我敢肯定還有其他方法可以解決這個問題,但我只問第一個例子中爲什麼第二個代碼片斷失敗。

編輯2:作爲輸入我輸入一個5位數字,然後回車鍵:說12345 \ n。在第一個片段中,1存儲在d1中,2存儲在d2中,依此類推。

在第二個代碼片段中,ar [0]是32767而不是1,依此類推。所以它失敗了。

+0

使用的getch()然後將其轉換 –

+6

什麼輸入?循環後的「ar」的內容是什麼?你檢查過什麼['scanf'](http://en.cppreference.com/w/c/io/fscanf)返回? –

+3

「失敗代碼中的數字都是32767」 - >代碼不打印出數字。他們的價值觀如何確定? – chux

回答

0

試試這個:

#include <stdio.h> 
#include <conio.h> 

int main(int argc, char *argv[]) { 
    printf("Enter group of five digits: "); 
    char number[5]; 
    scanf("%s", &number); 

    int digits[5]; 
    for (int i = 0; i < 5; i++) { 
     digits[i] = number[i] - '0'; 
    } 

    printf("d1=%d d2=%d d3=%d d4=%d d5=%d", digits[0], digits[1], digits[2], 
      digits[3], digits[4]); 
    getch(); 
}