Zeilen aus Datei einlesen



  • hallo, ich hábe ein Problem mit meinem Programm, welches aus einer Datei zeilenweise auslesen und dieses auf dem BS ausgeben soll.
    Leider handelt es sich hierbei nicht um normales Auslesen, sondern ich brauche immer nur die Zeilen, die mit <testzeile> beginnt. Nachdem diese Zeile, die mit <testzeile> beginnt ausgegeben wurde, sollen danach alle Zeilen ausgegeben werden, bis das nächste mal irgendetwas zwischen < und > auftaucht.(z.B.<ENDE>; könnte aber auch <TAG> oder so sein).
    Wie kann ich da ran gehen? Ich habe schon versucht hier, so anzufangen:

    File *testfile=NULL; 
    testfile = fopen("test.txt","r");
    while ( fgets (in, 10000, testfile) != NULL )
    	{		
    		if ( strstr (in,"<testzeile>") != NULL )	
    		{
    			//Wie kann ich weitermachen??? Habe keine Idee.
    		}
    
    	}
    


  • Nimm doch ein Flag

    int read = 0;
    File *testfile=NULL; 
    testfile = fopen("test.txt","r");
    while ( fgets (in, 10000, testfile) != NULL )
    	{		
    		if ( strstr (in,"<testzeile>") != NULL )	
    		{
                            read = 1;
    		}
                    else if(read != 0)
                    {
                       // hier weitermachen
                    }
    
    	}
    


  • Wenn ich das so mache wie MaSTaH postete funktioniert das nicht. Ich will ja alleZeilen ausgeben, von der Zeile an, wo der Suchstring das erste Mal auftauchte, bis zu der Zeile, wo <***> das erste mal auftaucht. Allerdings ohne die Zeile in der <***> schon steht.
    *** könnte in dem Fall für jeden x-beliebigen String stehen.



  • und wobei hängst du jetzt genau?
    MaSTaHs Code ist doch der richtige Ansatz um dein Problem zu lösen...



  • ja, der Ansatz ist schon gut 🕶
    aber angenommen ich gebe an der Stelle "hier weitermachen" noch printf("%s",in) ein, bekomme ich einfach mal nichts ausgegeben.
    Bsp:

    int read = 0;
    File *testfile=NULL; 
    testfile = fopen("test.txt","r");
    while ( fgets (in, 10000, testfile) != NULL )
    {        
        if ( strstr (in,"<testzeile>") != NULL )    
        {
                        read = 1;
        }
                else if(read != 0)
                {
                   // hier weitermachen
                   printf("%s",in);
                }
    
    }
    

    wenn ich das else bei else if weglasse, dann bekomme ich ja wenigstens etwas ausgegeben... aber so?!? 😕


Anmelden zum Antworten