C Programmierung While-Schleife



  • Hallo liebe C++ Community,

    ich bastele gerade an einem Programm in C, welches sozusagen einen Raum ablaufen soll. Es soll bei jedem Schritt gefragt werden ob man vor einer Wand steht und dementsprechend entweder einen Schritt machen, oder eben eine Drehung um der Wand auszuweichen.

    Allerdings komme ich mit der While-Schleife nicht zurecht. Theoretisch sollte sie solange laufen bis man ein y für Ja tippt. Aber egal welchen Buchstaben ich tippe, es wird immer "schritt!" ausgegeben.

    Ich hoffe ich drücke mich soweit verständlich aus, bin ein blutiger Anfänger was Programmierung angeht.😅

    Vielen Dank für eure Hilfe.

    Gruß Nessima

    int main ()
    {
    char wand[2];
    short i;

    printf ("Ist die Wand vor dir?\n");
    scanf ("%s", wand);
    for (i = 1; i <= 4; i++)
    {
    while (wand[0] != "y" && wand[0] != "Y")
    {
    printf ("schritt!\n");
    printf ("Ist die Wand vor dir?\n");
    scanf ("%s", wand);
    }
    printf ("Drehung\n");
    }
    return 0;
    }



  • Warum liest du einen String ein, wenn du ein Zeichen lesen willst?

    Stringvergleiche funktionieren in C nicht mir == oder !=, sondern mit strcmp.



  • @manni66 Es ist ja noch nicht mal ein Stringvergleich.

    "Y" ist in C etwas anderes als 'Y'
    "Y" ist ein Stringliteral was wie ein pointer auf char ist (char*)
    'Y' ist ein int (oder char), da funktionieren Vergleiche mit ==, !=, <, >

    wand[0] ist ein char



  • Vielen Dank! Die Gänsefüßchen machen also den Unterschied.

    Danke @DirkB !

    Ich würde gerne noch eine Art Eingabeprüfung einbauen, sodass der Benutzer nur y für Ja und n für nein eingeben kann. Vielleicht so etwas wie:

    if(wand[0] != 'y' || wand[0] != 'n')
    {
    printf("Bitte überprüfen Sie Ihre Eingabe!");
    }

    allerdings bin ich mir nicht sicher ob das Sinn macht bzw. an welche Stelle ich es schreibe. In der While Schleife wird es dann jedes Mal ausgegeben und trotzdem ein Schritt gemacht.



  • @Nessima Selbst wenn das Zeichen ein 'y' ist, ist es immer noch ungleich 'n', dann steht da 0 || 1 und das ist 1 und somit wahr.

    In dem if gibt es ja nur die Ausgabe und ohne else auch keine Alternative etas anderes zu tun

    @Nessima sagte in C Programmierung While-Schleife:

    Die Gänsefüßchen machen also den Unterschied.

    Das sind absolute C-Grundlagen.
    Ohne den Unterschied zu kennen begreifen, brauchst du nicht mit Zeichenverarbeitung (Strings) anfangen.



  • Schreibe bitte in eine Zeile vor Deinem Code ``` und in eine Zeile nach Deinem Code ```. Alternativ markiere Deinen Code und klicke auf das </> in der Symbolleiste über dem Eingabefeld.
    Du kannst Deine Beiträge auch im Nachhinein bearbeiten. Den Menüpunkt "Bearbeiten" findest Du in dem Drei-Punkte-Menü rechts unter Deinen Beiträgen. Danke.