C-Programmierung - Wiederholen scanf, bis nur noch zahlen eingegeben werden

Was ich wan ' T zu tun, ist zu überprüfen, ob meine Eingabe ist eine Zahl und dann weiter, sonst drucken Sie ein Falsches format und bitten um einen neuen Eingang. Was ich bekomme ist eine endlose Schleife drucken "Falschen format"

Dies ist meine Funktion für die Eingangs-Nummer:

void input_number(int *number)
{

    printf("Number: ");

    if ( scanf("%d", number) == 1 )
        return 0;
    else
    {
        printf("-> Wrong format, try again! <-\n");
        input_number(number); //start over
    }
}

Wenn ich das Programm ausführen will ich es in etwa so Aussehen:

Nummer: Hallo

-> Falsches format, versuchen Sie es erneut! <-

Nummer: 4

und gehen auf....

  • Nicht die Ursache des Problems ist, aber Sie wollen nicht, Rekursion zu verwenden, für die Zwecke der Wiederholungen. Auch, Sie sind re-calling input_number ob Sie erfolgreich die Eingabe eine Zahl ist oder nicht. Sie sind fehlende Klammern ({}) rund um Ihren else - Klausel.
InformationsquelleAutor Zn3 | 2013-10-08
Schreibe einen Kommentar