2016-04-10 11 views
-2

Ich muss alle führenden Nullen im Eingang beibehalten, daher nehme ich die Ziffern als char s und wandle sie dann unter Verwendung der ctoi()-Funktion in Ganzzahlen um in diesem Code gezeigt:Eingangsnummern (kann mit führender Null sein), aber ohne führende Null ausgeben

#include<stdio.h> 

#define ctoi(a) a-'0' 

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

Aber dieser Code hat nicht funktioniert. Was ist das Problem?

Input: 

001 

78 
00

Expected Output: 

1 
123 
78 
123 

But I got: 

1 
1 
7 
1 
+0

Sie benötigen einen [ 'scanf' (und den dazugehörigen Funktionen) Referenz] (http://en.cppreference.com/w/c/io/fscanf). Überprüfen Sie die Tabelle mit allen Formatcodes. –

Antwort

0

Wenn Sie die Zahl als Ganzzahl speichern, speichern Sie nur die tatsächliche Zahl und nicht die Formatierung, die für diese Zahl verwendet wurde. Wenn Sie die Formatierung unverändert beibehalten möchten, müssen Sie sie entweder als Zeichenfolge oder als eine andere Möglichkeit zum Speichern der ursprünglichen Formatierung speichern.

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

Schlimmer noch, OP benutzt _single_ 'char', nicht Arrays, also wird nur die erste Ziffer beibehalten. –

Verwandte Themen