Mal wieder eine kurze Frage zur Bedeutung.. (1!=scanf..)



  • Hallo,

    kurze Frage.. Aufgabe war in einem Tutorial einen Umrechnungsbetrag/Wechselkursrechner zu erstellen mit gewissen Vorgaben, z.B. bei Umrechnung nur postive ganze Zahlen und bei Wechselkurs nur positive Zahlen.. Von der funktionalität habe ich eigentlich soweit alles problemfrei hingekriegt(nur eine kleine Sache vergessen), dass das Ding genauso läuft, wie es sein sollte. Habe dann blos in der "Musterlösung" etwas gefunden, was sich überschneidet und deren Bedeutung ich iwie auf die schnelle auch nicht rausbekomme. Zum Vergleich mal beide Codes:

    Mein Code:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char auswahl;
        int u;
        float w;
    
        printf("Waehrungsumrechner \n");
        printf("------------------ \n");
        printf("u - Umrechnungsbetrag eingeben \n");
        printf("w - Wechslekurs eingeben \n");
        printf("------------------------ \n");
        printf("Funktion auswaehlen: ");
        scanf("%c",&auswahl);
    
        if (auswahl=='u') {
            printf("Umrechnungsbetrag \n");
            printf("----------------- \n");
            printf("Bitte Umrechnungsbetrag eingeben: ");
            scanf("%d", &u);
                if (u<=0) {
                    printf("Keine Eingabe von negativen Umrechnungsbetraegen!");
                    return 1;
                }
                else printf("Umrechnungsbetrag von %d", u);
                return 0;
    
        }
        if (auswahl=='w') {
            printf("Wechselkurs \n");
            printf("----------- \n");
            printf("Bitte Wechselkurs eingeben: ");
            scanf("%f", &w);
                if (w<=0.0) {
                    printf("Keine Eingabe von negativen Wechselkursen!");
                    return 2;
                }
                else printf("Wechselkurs von %f", w);
                return 0;
    
        }
    
        else printf("Falsche Eingabe, nur Auswahl zwischen u und w!");
    
    	return 0;
    }
    

    Lösung des Tuts:

    #include <stdio.h>
    int main(){
    	int i,ti;
    	float f,tf;
    	char c;
    	printf("Waehrungsumrechner\n");
    	printf("------------------\n");
    	printf("u - Umrechnungsbetrag eingeben\n");
    	printf("w - Wechselkurs eingeben\n");
    	printf("------------------------\n");
    	printf("Funktion auswaehlen: ");
    	scanf("%c",&c);
    	if(c=='u'){
    		printf("\nUmrechnungsbetrag\n");
    		printf("-----------------\n");
    		printf("Bitte Umrechnungsbetrag eingeben: ");
    		if(1!=scanf("%i",&ti)){
    			printf("Programmabbruch wegen ungueltiger Eingabe!\n");	
    			return 1;
    		}
    		else if(ti<0){
    			printf("Keine Umrechnung von Negativbetraegen!\n");
    			return 2;
    		}
    		else if(ti==0){
    			printf("Umrechnungbetrag muss mindestens 1 sein!\n");
    			return 3;
    		}
    		else{
    			i=ti;
    			printf("Der Umrechnungsbetrag %i wurde hinterlegt.\n",i);
    			return 0;
    		}
    
    	}
    	if(c=='w'){
    		printf("\nWechselkurs\n");
    		printf("-----------\n");
    		printf("Bitte Wechselkurs eingeben: ");
    		if(1!=scanf("%f",&tf)){
    			printf("Programmabbruch wegen ungueltiger Eingabe!\n");	
    			return 4;
    		}
    		else if(tf<0.0){
    			printf("Keine Eingabe von negativen Wechselkursen!\n");
    			return 5;
    		}
    		else{
    			f=tf;
    			printf("Der Wechselkurs %f wurde hinterlegt.\n",f);
    			return 0;
    		}
    	}
    	printf("Programmabbruch wegen ungueltiger Eingabe!\n");
    	return 6;
    }
    

    Mein Code ist doch im Endeffekt das selbe, nur kürzer (und ohne die Fehlermeldung bei 0)? Oder habe ich da etwas falsch verstanden.. 😕 Was macht das "1!=scanf..." eigentlich?



  • scanf gibt die Anzahl der erfolgreich durchgeführten Konvertierungen zurück. Wenn dort also etwas anderes als 1 zurückkommt, muss die Eingabe ungültig gewesen sein.


Log in to reply