2016-10-14 17 views
-1

Ich versuche, eine ITOA (Ganzzahl zu Array) -Funktion mit Zeigern zu schreiben.Ausdruck Zeichenfolge zeigt Symbole

Also das ist, was ich bis jetzt bekommen habe. Ich debuggte und es funktioniert gut. Die Sache ist, das Drucken selbst funktioniert nicht. Ich füge zwei Screenshots hinzu.

Würde mich über Hilfe freuen.

int num_length(int number) 
{ 
    int count = 0; 

    while (number > 0) 
    { 
     count++; 
     number /= 10; 
    } 

    return count; 
} 

void itoa(int number, char *strptr) 
{ 
    int number_len = num_length(number); 
    char *start = strptr; 
    strptr += number_len - 1; 

    while (strptr >= start) 
    { 
     *strptr = number % 10; 
     number /= 10; 
     strptr--; 
    } 
} 

void print_string(char *strptr) 
{ 
    while (*strptr != '\0') 
    { 
     printf("%c", *strptr); 
     strptr++; 
    } 
} 

void main(void) 
{ 
    int number; 
    char number_in_string[N] = { '\0' }; 
    char *strptr = &(number_in_string[0]); 
    printf("Enter a number: "); 
    scanf_s("%d", &number); 

    itoa(number, strptr); 

    print_string(number_in_string); 
    getch(); 
} 

+2

nicht Spam-Tags - das ist nicht C++. – UKMonkey

+1

'* strptr = Nummer% 10;' -> '* strptr = (Nummer% 10) + '0';' –

+0

print_string: printf ("% s", mein_null_terminated_str) nur ein Gedanke. – UKMonkey

Antwort

2

Wenn Sie versuchen, eine Reihe von numerischen Zeichen zu bekommen (als evident scheint durch print_string(a)-Funktion), die Sie benötigen um die Werte entsprechend einzustellen:

*strptr = number % 10 + '0'; 

Wie bei Ihrer Debugging-Ausgabe ('\x2', '\x5', '\x5') erhalten Sie die einzelnen Ziffern der Zahl richtig, aber das sind binäre Werte, nicht die Zeichendarstellungen.

Um die erste in die letztere umzuwandeln, müssen Sie '0' hinzufügen (0x30, wenn Sie beispielsweise ASCII verwenden). C garantiert, dass die numerischen Werte zusammenhängend sind, so dass dies sicher ist.


(a) ... das könnte, nebenbei bemerkt, mit einem einfachen Fassung:

printf("%s", number_in_string); 

in Ihrer main Funktion.

Verwandte Themen