fgets-Problem



  • Hi, habe ein Problem mit fgets.
    Ich habe ein programm geschrieben, welches zwei Dateien einliest (mit fgets).
    Wenn ich in der einen datei einen bestimmten string finde, soll diese datei soweit eingelesen werden, wie ich es möchte.
    Z.B. lese ich datei 1 ein und suche in einer der zeilen "dasisteintest". Zur gleichen Zeit lese ich auch die zweite datei zeilenweise ein. Das klappt alles.
    Sobald jetzt der string in datei 1 gefunden wurde, soll diese beispielsweise so weit vordringen, bis der string erneut gefunden wird (in Datei 1). Wie kann ich das lösen?

    Habe es bisher so, klappt aber nicht...

    nomore_input=0;
    
    //hier lese ich schon beide dateien ein
    							//nomore_input wird vorbereitet um die Zeilen, die nicht gebraucht werden zu überspringen
    								while(nomore_input==0)
    								{
    									fgets(temp, MAX_LEN, file);
    									if(strstr(temp,"}=")!= NULL)
    									{
    										printf("->now\n");
    										nomore_input=1;
    									}
    
    								}
    


  • GustavGans schrieb:

    Sobald jetzt der string in datei 1 gefunden wurde, soll diese beispielsweise so weit vordringen, bis der string erneut gefunden wird (in Datei 1). Wie kann ich das lösen?

    Indem du einfach weiter einliest und vergleichst?

    Vielleicht ist es sinnvoll sich die Zeilen zu merken, wo der erste und der zweite String gefunden werden.

    Für was ist datei2 gut? Für was brauchst du das?



  • die zweite datei ist nur dazu da, dass wenn der string in datei1 das 2.mal gefunden wird, soll dieser in datei2 an die gleiche stelle geschrieben werden...



  • So, werde das problem noch mal genauer behandeln...
    Und zwar ist es so... die erste datei wird eingelesen und ist ungefähr so aufgebaut:

    1=peter
    3=theo
    ...
    

    die zweite datei ist ebenso aufgebaut:

    1=max
    2=karl
    3=kuli
    9=falk
    

    wenn in der ersten datei jetzt ein eintrag gefunden wurde, z.B. 1=peter
    wird die zweite datei eingelesen bis 1= gefunden wird. Anschließend soll in eine seperate Datei dann 1=max stehen... wurde also ersetzt...
    Hoffe bis jetzt ist es klar. es kann aber auch sein, dass an eine zahl mehrere namen geschrieben werden z.B.

    1=Piere
      Lutz
      Moritz
    

    wenn ich jetzt diese zeilen aus datei 2 in die seperate datei schreibe, müssen ja in datei 1 diese 3 zeilen übersprungen werden, damit der nächste eintrag gefunden wird...
    Sprich in datei 1 steht:

    1=Piere
      Lutz
      Moritz
    

    in datei 2 steht:

    1=***
    2=***
    3=***
    

    Nach durchlauf des Programms sollen in der extra datei folgende daten stehen:

    1=Piere
      Lutz
      Moritz
    2=***
    3=***
    ...
    

    Hoffe es war deutlicher und ihr könnt mir helfen



  • Vorschlag:
    Mach dir eine Struktur in der du die einzelnen Datensätze speichern kannst. Als Datensatz bezeichne ich jetzt z. B. 1=max oder 1=Piere Lutz ...
    Du solltest also in der Struktur die Nummer und den oder die Namen speichern können (die Namen wohl am besten dynamisch).

    Als nächstes liest du beide Dateien komplett aus und speicherst die einzelnen Datensätze in der Struktur, besser gesagt in einem Array der Struktur (sollte wohl auch besser dynamisch sein).

    So nun hast du alles im Arbeitsspeicher und kannst damit arbeiten. Du musst also die Datensätze (Array) der 1. Datei durchgehen und die Daten im 2. Array ändern.

    Wenn du dann alle Datensätze durch bist, schreibst du die Daten von dem 2. Array wieder in die 2. Datei.


Log in to reply