Bedingung anders formulieren



  • Doppelt



  • pro schrieb:

    Mein Problem ist dass ich jetzt 2 mal Enter drücken muss anstatt 1 mal.
    Wenn ich mehr Zahlen als 5 eingebe, ist es kein Problem jedoch wenn ich nur 2 Zahlen drücke und dann Enter bleibt das Programm hängen.

    [cpp]scanf("%d %d %d %d &d", a[0], a[1], a[2], a[3], a[4]);
    while ((c = getchar()) != '\n');[cpp]

    feherhafter code.
    %d und nicht &d, &a[n] und nicht a[n] 🙄



  • Danke für die Antworten.

    @hartmut

    Tut mir leid aber ich kann aus deinem Code sehr wenig herauslesen.

    @problemerkenner
    Das waren nur Tippfehler.

    So sieht der Code aus. Ich habe wie schon erwähnt diese Zeile eingefügt

    while ((c = getchar()) != '\n');
    

    . Das Problem ist, seitdem ich diese Zeile hinzugefügt habe muss ich am Ende 2x Enter drücken. Ich glaube das hat etwas mit dem Puffer zu tun.

    Und wie schon erwähnt bei scanf wenn ich jetzt mehr Zahlen eintippe wird der Puffer einfach geleert. Aber wenn ich nur 2 anstatt der 5 Zahlen eintippe und Enter drücke bleibt das Programm hängen. Wahrscheinlich weil es noch auf die restlichen scanf wartet.

    Kann man das irgendwie ausbessern. Wenn ich nur 2 anstatt 5 Zahlen eingebe und Enter drücke soll es im Programm weitermachen.

    .
    .
    .
    .
                do
                {
                    printf ("\n");
    
                    scanf ("%d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4]); 						
    while ((c = getchar()) != '\n');
    
    .
    .
    .
    
            printf ("Spiel wiederholen, \"Enter\" drücken!\n\n");
            getchar();
            scanf ("%c", &enter);
    
        }
        while (enter=='\n');
    


  • Jepp, scanf wartet auf die restlichen Zahlen. Nimm fgets und sscanf.

    Gruß,
    B.B.



  • pro schrieb:

    Danke für die Antworten.

    @hartmut

    Tut mir leid aber ich kann aus deinem Code sehr wenig herauslesen.

    Was ist da unklar? 😕


Anmelden zum Antworten