end of line



  • ich benoetige für ein programm versch. funktionen z.b. zur ermittlung der länge einer zeichenkette oder zum abfragen, ob das ende der zeile (txt-file)/des textes erreicht ist. das problem stellt aber schon die erste funktion dar:

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    bool istEOL(FILE *file) //true wenn das Zeilenende erreicht ist.
    {
         return getc(file)=='\n';
    };
    

    mal ne einfache variante, die abfragt ob das zeilenende erreicht ist.

    while (( zeichen = getc(file))&&(eol(file)==false)) putc (zeichen,stdout);
    

    so werden dann die zeichen wieder ausgegeben, allerdings kommt dabei irgendeine wirre zeichenfolge raus, warum ?!

    PS: kann ich dann dannach mittels

    #define EOL istEOL(FILE *file)==true
    

    EOL als Konstante definieren? geht warscheiblich nur wenn der FILE pointer den namen file hat oder?



  • plankton schrieb:

    PS: kann ich dann dannach mittels

    #define EOL istEOL(FILE *file)==true
    

    EOL als Konstante definieren?

    nee, als macro müsste das etwa so aussehen:

    #define EOL(f) istEOL(f)
    


  • plankton schrieb:

    while (( zeichen = getc(file))&&(eol(file)==false)) putc (zeichen,stdout);
    

    so werden dann die zeichen wieder ausgegeben, allerdings kommt dabei irgendeine wirre zeichenfolge raus, warum ?!

    Du ziehst ein Zeichen aus dem Buffer und weißt es zeichen zu. Dann ziehst du nochmal ein Zeichen aus dem Buffer für den Check auf EOL. Zieh ein Zeichen raus und benutze das für deinen EOL Check. Oder checke erst auf eol

    also

    while (( (eol(file)==false) && zeichen = getc(file)))

    und packe das Zeichen mit ungetc wieder zurück in deiner eol Funktion, bevor du die verlässt.



  • ok vielen dank hätt ich auch selbst draufkommen können 🙄


Anmelden zum Antworten