beenden einer endlosschleife, bzw aussteigen aus einer endlosschleife



  • Hallo nochmal!
    Nachdem ich zuerst im falschen Forum gepostet hab, hier jetzt nochmal:

    Ich muss für die FH grad ein Programm schreiben wo es unter anderem darum geht diverse zeichen usw aus nem file auszulesen,es geht im prizip darum das dieses File in späterer Folge durch einen stream ersetzt wird (rs 232) welcher von einer gps maus kommt.. aber was ich jetzt eigentlich wissen möchte ist folgendes: ich bekomme von dieser gps maus ja ständig signale gesendet somit hab ich eine endlosschleife generiert die permanent daten ausliest, zeit datum, koordinaten usw... nur jetzt will ich natürlich auch mal ausssteigen indem ich zb. die Taste Q drücke auf der Tatsatur oder zb strg+Q.
    Hab das jetzt auch schon über paar möglichkeiten probiert,sorgar die funktion getch (conio.h) hab ich ausprobiert komme aber nicht zu dem gewünschten ergebniss. Vielleicht bin ich eh schon knapp vor der Lösung aber ich checks echt nicht mehr!
    anbei der teil des codes:

    while(1)
    {

    do while((ch = getch()) && ch != 'q'); // das hier geht ned
    //if(getchar()=='A') abort(); // hat auch ned funktioniert
    {

    fgets(str,100,pFile1); // Zeichen auslesen aus pFile
    pch = strtok (str,",");

    if(strcmp(pch,"GPGGA")==0) { printf("GPGGA gefunden\n");
    pch = strtok (NULL, ",");
    printf("Die Zeit in der GGA Nachricht ist: %c%c:%c%c:%c%c\n",pch[0],pch[1],pch[2],pch[3],pch[4],pch[5]);
    }
    if(strcmp(pch,"GPRMC")==0) { printf("GPRMC gefunden\n");
    pch = strtok (NULL, ",");
    printf("Die Zeit in der RMC Nachricht ist: %c%c:%c%c:%c%c\n",pch[0],pch[1],pch[2],pch[3],pch[4],pch[5]);
    }

    }
    }

    so schaut des mal aus, ist aber nur ein bruchteil des codes!

    danke
    stefan



  • Shiggysteve schrieb:

    while(1)
    {

    do while((ch = getch()) && ch != 'q'); // das hier geht ned
    //if(getchar()=='A') abort(); // hat auch ned funktioniert
    {

    fgets(str,100,pFile1); // Zeichen auslesen aus pFile
    pch = strtok (str,",");

    if(strcmp(pch,"GPGGA")==0) { printf("GPGGA gefunden\n");
    pch = strtok (NULL, ",");
    printf("Die Zeit in der GGA Nachricht ist: %c%c:%c%c:%c%c\n",pch[0],pch[1],pch[2],pch[3],pch[4],pch[5]);
    }
    if(strcmp(pch,"GPRMC")==0) { printf("GPRMC gefunden\n");
    pch = strtok (NULL, ",");
    printf("Die Zeit in der RMC Nachricht ist: %c%c:%c%c:%c%c\n",pch[0],pch[1],pch[2],pch[3],pch[4],pch[5]);
    }

    }
    }

    so schaut des mal aus, ist aber nur ein bruchteil des codes!

    danke
    stefan

    char ch1, ch2
    do {
    } while ((ch1 = getch()) != 'q');
    
    if((ch2 = getchar()) == 'A') {
      /* ... was auch immer .. */
    }
    

    Die Abbruchbedingung müßtest Du oben bei while() schreiben. Ansonsten kannst Du Dir einen Wolf in die Tastatur hämmern ;).



  • hmm.. ich glaub ich habs no ned ganz gerafft...
    warum muss ich quasi 2 abfragen machen??
    ich hab jetztmal folgendes anstatt des while(1) eingefügt.

    do{
                } while((ch = getch()) != 'q');
                    {
    
                            fgets(str,100,pFile1);                                    // Zeichen auslesen aus pFile
                            pch = strtok (str,",");
    

    das ganze bleibt aber trotzdem noch stehen solang bis ich q eingeb...
    ich komm echt ned drauf wo der hund ist..

    danke



  • Nicht-blockierende (non-blocking) Eingabefunktionen gibt es in ANSI C nicht, da diese Systemspezifisch sind. In der Linux, sowie der Win32-Consolen FAQ wirst du unter dem Suchwort kbhit fündig werden. Wenn du mir sagt unter welchem System du arbeitest, kann ich dich in die korrekte Sektion verschieben.



  • arbeite unter Winxp... danke



  • Dieser Thread wurde von Moderator/in TactX aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten