2016-04-10 9 views
-2

入力の先行ゼロを保存する必要があります。charとして数字を入力してからctoi()関数を使用して整数に変換します。数値を入力すると0になる可能性がありますが、先行ゼロがない場合に出力されます

#include<stdio.h> 

#define ctoi(a) a-'0' 

int main() { 
    int n; 
    char ch; 
    scanf("%c",&n); 
    ch=ctoi(n); 
    printf("%d",n); 
} 

しかし、このコードは機能しませんでした。何が問題ですか?

Input: 

001 

78 
00

Expected Output: 

1 
123 
78 
123 

But I got: 

1 
1 
7 
1 
+0

['scanf'(および関連する関数)のリファレンス](http://en.cppreference.com/w/c/io/fscanf)が必要です。すべてのフォーマットコードで表をチェックしてください。 –

答えて

0

数値を整数として格納すると、その数値を作成するために使用された書式ではなく、実際の数値だけが格納されます。書式をそのまま維持したい場合は、文字列または元の書式を格納する他の手段として格納する必要があります。

int n = 10; // only stores a number in memory 
char text[10] = "00010"; // stores any text, but can not be used for number arithmetic as stored here 
+0

さらに悪いことに、OPは配列ではなく、単一の 'char'を使用しているので、1桁目だけが保持されます。 –

関連する問題