wie kann ich..



  • hi leute!

    Gibt es eine möglichkeit zu überprüfen ob jemand eine zahl oder einen buchstaben eingibt?

    also habe:

    float eingabe;
    scanf("%f",&eingabe);
    

    und will das ich kontrolliere das es ja eine zahl ist und kein buchstabe...
    jedoch operatoren wie (+,-,*,/) oder ausnahmen die ich bestimme ein zu lassen.

    gruss curbi 🙂



  • Curbuser schrieb:

    hi leute!

    Gibt es eine möglichkeit zu überprüfen ob jemand eine zahl oder einen buchstaben eingibt?

    also habe:

    float eingabe;
    scanf("%f",&eingabe);
    

    und will das ich kontrolliere das es ja eine zahl ist und kein buchstabe...
    jedoch operatoren wie (+,-,*,/) oder ausnahmen die ich bestimme ein zu lassen.

    gruss curbi 🙂

    Hi curbi!

    Also in 'ner float Variable kannst Du keine Buchstaben (das sind char's) speichern - geht nicht.
    In float speichert man Fließkommazahlen(intern Temperals, die als BCD codiert werden).
    Ansonsten bei char ist alles was größer oder gleich '0' und kleiner oder gleich '9' ist eine Dezimalzahl.
    😉



  • Curbuser schrieb:

    hi leute!
    Gibt es eine möglichkeit zu überprüfen ob jemand eine zahl oder einen buchstaben eingibt?

    Hi ! Klar:

    #include <stdio.h>
    
    int main()
    {
    	float fnum = 0.0;
    	char buf[BUFSIZ];
    
    	puts("Type a float number. FLOAT NUMBERS ONLY!!");
    	if( 1 != scanf( "%f", &fnum ) )
    	{
    		printf("This is not a float number: %s\n", fgets(buf, BUFSIZ, stdin) );
    		return 1;
    	}
    
    	if( *(fgets(buf, BUFSIZ, stdin)) !='\n' )
    	{
    		printf("The input is a float number plus following additional char(s): %s", buf );
    		return 1;
    	}
    
    	printf("Number OK: %f.3", fnum );
    	return 0;
    }
    

    🙂



  • @ abcd
    danke für die info
    ich meinte damit nur es sollte dau´s abfangen...die mein programm mit buchstaben füttern wollen...
    das heißt aber wenn ich hergehe und sie als char annehme und sie an float übergebe kann ich prüfen ob es eine zahl ist. jedoch mit der komma einschränkung? sprich x natürliche zahl

    @agga

    hmm... das sieht kompliziert aus (bin noch nicht so gut in c....)
    verstehe nur 85% dieser funktion..
    da ist ein pointer drinn stimmts?
    geht das auch ohne?
    oder einfacher? 😃



  • ja, du kannst die eingabe auch mit fgets entgegennehmen.
    der inhalt lässt sich auch nach float/double konvertieren.
    die prüfung:
    entweder du überprüfst alle eingelesenen zeichen in einer selbstgeschriebenen funktion, oder du lässt eine geeignete funktion wie z.b. strtod diese arbeit übernehmen.
    allerdings geht es auch da nicht ganz ohne pointer, weil strtod als zweiten parameter einen zeiger auf einen char-zeiger erwartet. mit dem kannst du prüfen, ob noch andere zeichen in der eingabe waren.



  • Curbuser schrieb:

    @ abcd
    danke für die info
    ich meinte damit nur es sollte dau´s abfangen...die mein programm mit buchstaben füttern wollen...
    das heißt aber wenn ich hergehe und sie als char annehme und sie an float übergebe kann ich prüfen ob es eine zahl ist. jedoch mit der komma einschränkung? sprich x natürliche zahl

    Schreib doch die Eingabe von der Tastatur in einen Puffer und untersuche den Pufferinhalt.
    Wandeln von String nach float dann als letzten Schritt und fertig. 😉
    z.B.

    #include<stdlib.h>
    #include<stdio.h>
    
    int main()
    {		
    	int i = 0;
    
    	float eingabe;
    
    	char buf[21];
    
    	scanf("%20s", buf, 21);	 // liest max. 20 Zeichen 
    							 // von Tastatur in buf ein.
    	while (buf[i])
    	{
    		 if	((buf[i] >= '0' && buf[i] <= '9') || buf[i] == '.')
    		 {
    			 i++;
    		 }
    		 else
    		 {
    			printf ("Fehler - Neueingabe!\n");
    			i =	0;
    			scanf("%20s", buf, 21);
    		 }
    	}
    	eingabe = (float)atof(buf);
    	printf("Eingegeben wurde %f", eingabe);
    	return 0;
    }
    

    😉



  • und wenn man z.b. 1.23E+2 eingibt ? 😃





  • agga ugga schrieb:

    und wenn man z.b. 1.23E+2 eingibt ? 😃

    Sitzt er in meinem Beispiel in 'ner Endlos-Schleife 😃



  • abcd schrieb:

    agga ugga schrieb:

    und wenn man z.b. 1.23E+2 eingibt ? 😃

    Sitzt er in meinem Beispiel in 'ner Endlos-Schleife 😃

    hihihi..
    und bei -1 ? 😃



  • Danke für tipps leutz!!

    werd das mal begrüblen tun!

    curbi 👍



  • in so einem forum darfst gern meinen namen benutzen!!
    btw. grüss hannes&babse vo mir...


Anmelden zum Antworten