Textdatei auslesen und eine andere Textdatei schreiben?



  • die textdatei feld wird jetzt erzeugt , aber nichts reingeschrieben also die bleibt leer??



  • Vielleicht gibt keine 'E' Zeile, die zu einer 'A' Zeile gehört, denn es werden nur Paare rausgefiltert.
    Habe es bei mir probeweise laufen lassen und es hat funktioniert.

    Ansonsten musst du dich mit einem Debugger vertraut machen, oder Zwischenausgaben einbauen und dir anzeigen lassen.



  • müssen die 'A' und 'E' zeile (paarweise) in der textdatei Verkehrsdaten in Reihenfolge kommen oder wie ?



  • azoul schrieb:

    müssen die 'A' und 'E' zeile (paarweise) in der textdatei Verkehrsdaten in Reihenfolge kommen oder wie ?

    Nö, die E-Zeile muss irgendwo unterhalb der A-Zeile auftauchen. Falls sie oberhalb gefunden werden soll, musst du den Dateizeiger an den Anfang setzen.



  • hallo B.B.
    das Programm springt nie in dieser if Anweisung rein?

    if ( 0 == strcmp ( A, B ))
                    { // Die zur A-Zeile zugeh�rige E-Zeile gefunden. 
                        A [0] = ANFANG;
                        addAB ( A, B, Result ); // Unikat-Paar hinzuf�gen. 
    
                        break; // Bricht die innere while-Schleife ab. 
                    }
    

    weisst du wo das problem liegt?



  • azoul schrieb:

    hallo B.B.
    das Programm springt nie in dieser if Anweisung rein?
    ...
    weisst du wo das problem liegt?

    Das ist gut möglich, das hängt von deiner Datei verkehrsdaten.txt ab.
    Angenommen, dort gibt es eine Zeile, die so aussieht:
    A 192.168.0.84 5996 192.168.0.221 5890 0 user0 usera

    Und irgendwo weiter unten gibt es eine Zeile, die so aussieht:
    E 192.168.0.84 5996 192.168.0.221 5890 0 user0 usera

    Dann springt das Programm da auch rein. Sobald sich die Zeile aber mehr als nur um den einen Buchstaben, das 'E' unterscheidet, wird dort auch nicht reingehüpft.



  • die datei verkehrsdaten sieht so aus: z.B

    A 192.168.0.84 6500 192.168.0.221 6380 0 user user1
    A 192.168.0.84 6500 192.168.0.221 6380 0 user user1
    A 192.168.0.84 6500 192.168.0.221 6380 0 user user1
    E 192.168.0.84 6500 192.168.0.221 6380 user user1
    A 192.168.0.123 5062 192.168.0.121 10014 8 user3 user4
    A 192.168.0.84 6502 192.168.0.221 6382 0 user user1
    A 192.168.0.84 6502 192.168.0.221 6382 0 user user1
    A 192.168.0.84 6502 192.168.0.221 6382 0 user user1
    E 192.168.0.84 6502 192.168.0.221 6382 user user1
    E 192.168.0.123 5062 192.168.0.121 10014 user3 user4
    

    warum funktioniert dann nicht, obwohl die E Zeile immer nach A Zeile kommt??



  • Weil in deinen E-Zeilen die Codec-Nummern fehlen.



  • das habe ich auch vermutet muss damit morgen versuchen.



  • Kannst ja die Zeilen mit sscanf zerlegen, dann kannst du dir jedes einzelne Bestandteil einer Zeile angucken.
    Wieso morgen erst, has du keinen Compiler zu hause ?
    Und das so kurz vor der Abgabe ! 😮



  • B.B. schrieb:
    has du keinen Compiler zu hause ?

    nein nicht deswegen brauche dafür meine ganze analyseplattform (Server telefone ...muss alles automatisch funktionieren) und das habe ich nicht zuhause
    habe eben andere frage rein was mit zeitstempel wenn du mal eine idee hast?
    danke noch mal für hilfe..



  • Naja, diese verkehrsdaten.txt-Geschichte, die könntest du doch auch zu Hause zum laufen kriegen.
    Brauchst ja nur ne Textdatei mit deinen AE-Strings.



  • ja schon, habe ich versucht mit der Dev-C++ Compiler versucht aber irgendwie klappt nicht bekomme ein paar wahrnungen dafür habe keine lösung gefunden..deswegen



  • azoul schrieb:

    ja schon, habe ich versucht mit der Dev-C++ Compiler versucht aber irgendwie klappt nicht bekomme ein paar wahrnungen dafür habe keine lösung gefunden..deswegen

    Was für Warnungen denn? Warnungen sind keine Fehler und eventuell ganz unkritisch.



  • hallo B.B.
    habe ich heute morgen versucht, hat alles geklappt. da ich Änderungen an Verkehrsdaten gemacht habe also das Codec zu 'E' zeile manuell hinzugefügt habe.
    das problem jetzt ist es so: das codec könnte nur für 'A' zeile (nur am Anfang der telefonat werden die Codecs zwischen zwei user ausgehandelt) ausgelesen wird. am Ende der Telefonat werden keine Codecs ausgehandelt das hat zu folge dass das Codec in 'E' zeile nicht auftaucht. was kann ich an dem C-code ändern, dass das trotzdem funktioniert.



  • Du kannst die Zeilen in einzelne Komponenten aufteilen und diejenigen, die dich interessieren, miteinander vergleichen.



  • habe gemeint im C-code, der du gschrieben und geschickt hast. was kann ich da machen?



  • Natürlich im C-Code, wo denn sonst. An der Position, wo die Zeilen eingelesen werden, kannst du diese mit

    sscanf ( A, "%s %s %s %s %s %s %s %s", AoE, ipA1, ipA2, portA1, portA2, codec, nameA1, nameA2 ); 
    sscanf ( B, "%s %s %s %s %s %s %s %s", AoE, ipE1, ipE2, portE1, portE2,nameE1, nameE2 );
    

    aufteilen. Und dann kannst du die einzelnen char-Arrays, die dich interessieren, vergleichen.
    Z.B.

    if ( strcmp ( ipA1, ipE1 ) == 0 && strcmp  ( ipA2, ipE2 ) == 0 && ... // usw.
    


  • jetzt macht er das , aber er liest nur das erste paar von der textdatei verkehrsdaten dann hört er auf weiter zu machen..



  • Geh doch mal für jede Zeile mit nem Debugger durch, dann findest du schon den Grund.


Anmelden zum Antworten