Prüfen ob scanf eingabe eine Zahl ist



  • Hallo,
    muss ein Programm für die Uni schreiben bei dem mit Brüchen gerechnet wird. Problem ist eben das auch wirklich nur Zahlen eingegeben werden dürfen. In PHP zB gibt es ja die Funktion is_numeric um zu prüfen ob es sich um eine Zahl handelt. Gibt es etwas derartiges in C denn auch?

    Lg
    Alex



  • Wenn du bei scanf() etwas eingibst, was nicht zum übergebenen Formatstring passt, bricht es ab - danach kannst du anhand des Rückgabewertes überprüfen, wie weit er gekommen ist:

    if(scanf("%d",&val)!=1)
    {
      printf("Fehler bei Eingabe");
      ...//Aufräumen
    }
    


  • Alex04 schrieb:

    Hallo,
    muss ein Programm für die Uni schreiben bei dem mit Brüchen gerechnet wird. Problem ist eben das auch wirklich nur Zahlen eingegeben werden dürfen. In PHP zB gibt es ja die Funktion is_numeric um zu prüfen ob es sich um eine Zahl handelt. Gibt es etwas derartiges in C denn auch?

    Lg
    Alex

    Die Lösung von CStoll ist wohl eleganter/direkter, aber du kannst auch mittels

    int isdigit( int ch ), aus ctype.h überprüfen, ob es sich um eine Zahl handelt.



  • isdigit schrieb:

    int isdigit( int ch ), aus ctype.h überprüfen, ob es sich um eine Zahl handelt.

    aber nur für ein zeichen 😉


Anmelden zum Antworten