Überprüfen von Eingaben ?



  • Hallo,

    hab ein kleines Problem welches ich bis morgen für die Schule lösen muss

    Folgende Aufgabe:
    Schreiben sie ein Programm. Es wird ein Zeichen eingegeben. Wenn 'a' eingegeben wurde soll ausgegeben werden "eingabe richtig". Sonst wird nichts ausgegeben

    Mein Versuch klappt aber nur mit zahlen, was muss ich verändern um Bustaben zu überprüfen?

    int a;
    printf("Geben sie das richtige Zeichen ein ");
    scanf("%d", &a);
    
    if(einwurf == 1) {
    	printf("Eingabe richtig");
    }else {
    	printf("");
    }
    


  • ...int geht für buchstaben schonmal garnicht - bin aber selber c-noob

    #include<stdio.h>
    #include<string.h>
    
    int main() {
    char a[1];
    char einwurf[]="a";
    printf("Geben sie das richtige Zeichen ein ");
    scanf("%s", &a);
    
    if(strcmp(einwurf,a) == 0) {
        printf("Eingabe richtig");
    }else {
        printf("");
    } 
    }
    


  • Nimm die richtige Funktion: getchar()

    %d ist zur Eingabe von Dezimal-Integern da.

    @S3raph1m
    Du solltest bei scanf die Länge begrenzen, damit der String nicht über das Ende hinaus beschrieben wird.
    Bei Arrays ist auch kein Adressoperator nötig: scanf("%1s", a);

    Statt einwurf, kannst du auch gleich das Stringliteral bei strcmp hinschreiben:
    strcmp(a,"a")
    oder ein if (a[0] == 'a') machen.



  • Vielen dank schonmal, funktioniert zwar aber ist noch nicht das gesuchte. Wir sollen nur die Standart Bibliotheken benutzen (stdio.h)

    int a;
    printf("Geben sie das richtige Zeichen ein ");
    scanf("%d", &a);
    
    if(a == 1) {  // Mit der 1 funktionierts aber nicht wenn ich a einsetze
        printf("Eingabe richtig");
    }else {
        printf("");
    }
    


  • Nochmal:
    Bei scanf ist %d zum einlesen von Dezimal-Integer da.
    Da werden z.B. die Zeichen '1' und '2' dann in den Wert 12 umgewandelt.

    Da ein a aber nicht zu den Zeichen einer Dezimalzahl gehört, wird es eben nicht eingelesen.

    Du musst also den richtigen Formatspecifier zum einlesen von einem Zeichen finden (Zeichen, keine Zeichenkette).
    ⚠ der gesuchte Specifier erwartet dann aber auch einen Zeiger auf ein char.

    Nebenbei ist getchar() in stdio deklariert.
    Guckst du hier: http://www.cplusplus.com/reference/clibrary/cstdio/getchar/
    (da kannst du auch gleich bei scanf nachsehen)



  • Vllt. etwas besser...

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void) {
    int c;
    printf("Geben sie das richtige Zeichen ein: ");
    
    if( (c = getchar()) =='a')
    {
    putchar(c);
    printf("\nrichtiges zeichen");
    }
    else 
    {
    printf("\nfalsches zeichen");
    }
    
       return 0;
    }
    


  • keine Ahnung ob das für morgen noch relevant ist aber hier mal die richtige Variante ohne Dopplungen:

    #include <stdio.h> 
    
    int main(void)
    { 
    	printf("Geben sie das richtige Zeichen ein: "); 
    	if( getchar() =='a')
    	{
    		printf("richtiges zeichen"); 
    	} 
    	else 
    	{ 
    		printf("falsches zeichen"); 
    	} 
    	return 0; 
    }
    

Anmelden zum Antworten