Ganz-Zahlen & Int-Werte einlesen



  • Hi Leute!!!
    Vielleicht kann mir ja einer von euch weiterhelfen. Ich muss 2 Funktionen erstellen, eine, die dazu dient, dass es eine ABESICHERTE EINGABE von einer Ganzzahl gibt und die zweite Funktion ist für das SICHERE einlesen von INT-Werten. Kann mir da viel. einer von euch weiterhelfen??

    Wäre nett wenn ihr mir helfen könntet.
    MFG
    freak



  • z.b. scanf verwenden und den rückgabewert anschauen...
    oder erst als string einlesen und dann gucken obs ne gültige eingabe war...



  • Hallo,

    int nimt doch nur gazzalen.

    wilst du es ferbiten kommazahlen einzugeben oder auf bzw. abrunden?

    MFG TaccoGo



  • also die abfrage soll solange stattfinden, bis ich wirklich eine Ganzzahl eingebe. Das heißt auch wenn Punkte,Kommas oder mittendrin irgendwo Buchstaben stehen. Kann mir da einer weiterhelfen??



  • les es als string ein und wandle dann den String mit atoi() in ein integer um. wenn ungültige zeichen im string stehen gibt atoi() einen Fehler zurück. Dann kannst du den user erneut eingeben lassen



  • @Horst2
    Das stimmt nicht ganz. atoi() liefert nur einen Fehler zurück, wenn ein ungültiges Zeichen am Anfang steht.

    @frikka
    Lese die Zahl als String ein (fgets()) und überprüfe jedes Zeichen (Schleife), ob es eine Zahl ist (isdigit()).



  • #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    
    char eingabe[20];
    int anzbuch,x;
    int digital;
    int min,max;
    int wert;
    
    void digit() 
    {
    	min=48;
    	max=57;
    
    	do {
    		gets(eingabe);
    			anzbuch=strlen(eingabe);
    			digital=1;
    		for (x=0;x<anzbuch;x++) 
    			{
    				if (isdigit(eingabe[x])) 
    				{
    				}
    				else 
    				{
    					digital=0;
    					break;
    				}
    			}
    		}while (digital<1);
    }
    

    So hab jetzt mal eine kleine Funktion geschrieben, die die Eingabe auf Buchstaben überprüft.
    Kann mir zufällig einer von euch sagen, wie ich das machen kann, dass der eingegebene Wert in einem Bereich liegt. Beispielsweise rufe die Funktion auf und übergebe zusätzlich noch einen minimal und einen maximalwert.
    Könnte ich die Eingabe irgendwie in einen Integerwert konvertieren???
    MFG
    frekka



  • kannst du z.b. so machen wenn du es selber schreiben willst
    eventuell noch dsa erste zeichen auf + oder - checken...
    umwandeln kannst du dann z.b. mit atoi...
    ob der wert dann innerhalb irgendwelcher grenzen liegt kannst du dann ja nach dem umwandeln checken...

    int isnumber(char* s){
    	while(isdigit(*s))++s;
    	return !*s;
    }
    

Anmelden zum Antworten