String auslesen und vergleichen



  • Hallo,

    mein Programm wird von einem anderen Programm aufgerufen.

    Zuerst sendet das andere Programm die Zeichenkette "uci\n"
    darauf soll mein Programm mit "id name\n" antworten
    und "uciok \n" antworten

    Daraufhin sendet das andere Programm "isready\n" und ich antworte mit "readyok\n"
    Danach soll mein Programm solange in einer Schleife laufen bis das andere Programm "quit\n" sendet.

    Ich weiß jetzt nicht wie ich die einzelnen Ausgaben des anderen Programmes abfragen bzw. vergleichen kann und wie ich dabei auch noch eine Schleife realisiere die erst bei quit verlassen wird.

    Sinngemäß habe ich mir das so vorgestellt:

    char* uc = "uci";
    char* isready ="isready";
    char* quit = "quit";
    char zeichen[256];
    bool ex = true;

    while (ex=true)

    cin.getline (zeichen,256);

    if (strcmp(zeichen, uc) == 0)
    {
    cout << "id name Shark Attack " << version << "\n";
    cout.flush();
    cout << "id author " << author << ", " << land << "\n";
    cout.flush();
    cout << "uciok\n";
    cout.flush();
    }
    else if (strcmp(zeichen, isready) == 0)
    {
    cout << "readyok\n";
    cout.flush();
    }
    else if (strcmp(zeichen, quit) == 0)
    {
    return;
    }

    uci wird jetzt an mein Programm gesendet, mein Programm antwortet jetzt aber nicht. Also schätze ich mal das meine if Abfrage nicht das macht was ich eigentlich wollte. Falls zeichen dasselbe enthält wie uc müßte ja die 0 für gleichheit gegeben sein und die Bedingung erfüllt.

    Oder verstehe ich das falsch ?

    Grüße
    Andreas



  • Hi,

    du hast in der while-Schleife die {} vergessen, also ist nur das cin in der Schleife, was natürlich endlos läuft...
    Außerdem muss es while(ex == true) heißen, sonst wird ex auf true gesetzt.
    Und im letzten if würde ich ex = false schreiben anstatt return (eigentlich würde ich oben schreiben while ex == false und unten ex = true, das macht irgendwie mehr Sinn)


Anmelden zum Antworten