Textdatei auslesen und eine andere Textdatei schreiben?
-
habe ein frage zu meiner Code wenn jemand da helfen kann..
also das Programm macht alles richtig wenn die datei Verkehrsdaten so aussieht:A 192.168.0.84 5910 192.168.0.221 5796 0 user user1
A 192.168.0.84 5910 192.168.0.221 5796 0 user user1
A 192.168.0.84 5910 192.168.0.221 5796 0 user user1
E 192.168.0.84 5910 192.168.0.221 5796 user user1
A 192.168.0.160 10460 192.168.0.151 10164 0 user3 user2
E 192.168.0.160 10460 192.168.0.151 10164 user3 user2
A 192.168.0.221 5806 192.168.0.84 5920 0 user1 user
E 192.168.0.221 5806 192.168.0.84 5920 user1 useraber wenn die datei Verkehrsdaten so aussieht: die drei ersten A zeilen habe die gleiche Inhalt
A 192.168.0.84 5910 192.168.0.221 5796 0 user user1
A 192.168.0.221 5796 192.168.0.84 5910 0 user1 user
A 192.168.0.221 5796 192.168.0.84 5910 0 user1 user
E 192.168.0.221 5796 192.168.0.84 5910 user1 user
A 192.168.0.160 10460 192.168.0.151 10164 0 user3 user2
E 192.168.0.160 10460 192.168.0.151 10164 user3 user2
A 192.168.0.221 5806 192.168.0.84 5920 0 user1 user
E 192.168.0.221 5806 192.168.0.84 5920 user1 userdann macht folgendes: die zwei ersten A zeilen habe den gleichen Inhalt
A 192.168.0.84 5910 192.168.0.221 5796 0 user user1
A 192.168.0.221 5796 192.168.0.84 5910 0 user1 user
E 192.168.0.221 5796 192.168.0.84 5910 user1 user
A 192.168.0.160 10460 192.168.0.151 10164 0 user3 user2
E 192.168.0.160 10460 192.168.0.151 10164 user3 user2
A 192.168.0.221 5806 192.168.0.84 5920 0 user1 user
E 192.168.0.221 5806 192.168.0.84 5920 user1 userobwohl ich die ip1 mit ip2 und port1 mit port2 im Code vergleiche so
strcmp(ip2,ip1)!=0 && strcmp(port2,port1)!=0
sieht nicht logisch aus ja??
aber wenn so es vergleichestrcmp(ip2,ip1)==0 && strcmp(port2,port1)==0
werden nur die E zeilen in textdatei Feld reingeschrieben...verstehe ich nicht mehr
#include <stdio.h> #include <unistd.h> #include <string.h> //Variableninitialisierung FILE *file, *file1; char data[256], ip1[32], ip2[32], port1[8], port2[8], IP1[32], char IP2[32], codec[8], name1[8], name2[8], AorE[1]; char Session1[32], Session2[32], Session3[32], Session4[32], Session5[32], Session6[32]; char *ptr; int n; int main(void) { // open a txt file verkehrsdaten file = fopen("/var/tmp/Verkehrsdaten","r"); n=0; while(1){ while(fgets (data, 256, file)) { //hier werden die Daten zeilenweise aus der verkehrsdaten.txt gelesen ptr = strtok(data," "); sprintf(AorE, "%s", ptr); if(strstr(AorE, "A")!=NULL) { ptr = strtok(NULL," "); sprintf(ip1, "%s", ptr); ptr = strtok(NULL," "); sprintf(port1, "%s", ptr); ptr = strtok(NULL," "); sprintf(ip2, "%s", ptr); ptr = strtok(NULL," "); sprintf(port2, "%s", ptr); ptr = strtok(NULL," "); sprintf(codec, "%s", ptr); ptr = strtok(NULL," "); sprintf(name1, "%s", ptr); ptr = strtok(NULL," "); sprintf(name2, "%s", ptr); //feld.txt wird hier durch file1 zum schreiben geöffnet file1 = fopen("/var/tmp/feld","a"); //beispielhafter Vergleich der Daten (funktioniert so nur für die ersten drei Zeilen!) if(strstr(Session2,port1)==NULL && strstr(Session4,port2)==NULL && strstr(Session5,name1)==NULL && strstr(Session6,name2)==NULL && strcmp(ip2,ip1)!=0 && strcmp(port2,port1)!=0 && strcmp(name2,name1)!=0) { fprintf(file1, "%s %s %s %s %s %s %s %s", AorE, ip1, port1, ip2, port2, codec, name1, name2); if(n==0){strcpy(Session1,ip1);strcpy(Session2,port1);strcpy(Session3,ip2);strcpy(Session4,port2);n++;} if(n==1){strcpy(Session1,ip1);strcpy(Session2,port1);strcpy(Session3,ip2);strcpy(Session4,port2);n--;} fclose(file1); } //alternative Behandlung, wenn eine Zeile mit "E" markiert ist if(strstr(AorE, "E")!=NULL) { ptr = strtok(NULL," "); sprintf(IP1, "%s", ptr); ptr = strtok(NULL," "); sprintf(port1, "%s", ptr); ptr = strtok(NULL," "); sprintf(IP2, "%s", ptr); ptr = strtok(NULL," "); sprintf(port2, "%s", ptr); ptr = strtok(NULL," "); sprintf(name1, "%s", ptr); ptr = strtok(NULL," "); sprintf(name2, "%s", ptr); file1 = fopen("/var/tmp/feld","a"); fprintf(file1, "%s %s %s %s %s %s %s", AorE, IP1, port1, IP2, port2, name1, name2); fclose(file1); } if(strstr(Session1,ip1)!=NULL && strstr(Session2,port1)!=NULL && strstr(Session3,ip2)!=NULL && strstr(Session4,port2)!=NULL) {n=0;} if(strstr(Session1,ip1)!=NULL && strstr(Session2,port1)!=NULL && strstr(Session3,ip2)!=NULL && strstr(Session4,port2)!=NULL) {n=1;} } } fclose(file); }
-
hallo leute kann jemand helfen...ein logik Fehler ist Code und ich finde es nicht....
danke im Voraus
-
azoul schrieb:
obwohl ich die ip1 mit ip2 und port1 mit port2 im Code vergleiche so
C/C++ Code:
strcmp(ip2,ip1)!=0 && strcmp(port2,port1)!=0
sieht nicht logisch aus ja??
aber wenn so es vergleiche
C/C++ Code:
strcmp(ip2,ip1)==0 && strcmp(port2,port1)==0
werden nur die E zeilen in textdatei Feld reingeschrieben...verstehe ich nicht mehr1 == ( strcmp(ip2,ip1) != 0 ) -> ip1 ist nicht gleich ip2
1 == ( strcmp(ip2,ip1) == 0 ) -> ip1 ist gleich ip2
-
strcmp schrieb:
1 == ( strcmp(ip2,ip1) != 0 ) -> ip1 ist nicht gleich ip2
1 == ( strcmp(ip2,ip1) == 0 ) -> ip1 ist gleich ip2das weiß ich auch das so ist aber ih meine warum bekomme mit dem code nicht was ich will wenn ich deisem vergleich mache... du kannst bei dir ausprobieren, wenn du mal zeit hast.?
-
azoul schrieb:
hallo B.B..
vielleicht die letzte Frage zu den Code:
wenn ich das allein in der konsolle ausführe macht er alles wunderbar aber wenn das programm in eindere aufrufe passiert folgendes:
...Wenn das Programm von einem anderen Programm aufgerufen wird, ändert sich prinzipiell nichts an dem Ablauf.
azoul schrieb:
ich habe das Programm in andere programm, das auf dauer läuft(Endlose Schleife), aufgerufen damit es alles automatisch läuft
Gibst du auch genug Zeit, damit sich das aufgerufene Programm beenden kann ?
-
kann jemand helfen den Fehler in meinem Code zu finden..
-
if(strstr(Session2,port1)==NULL && strstr(Session4,port2)==NULL && strstr(Session5,name1)==NULL && strstr(Session6,name2)==NULL
&& strcmp(ip2,ip1)!=0 && strcmp(port2,port1)!=0 && strcmp(name2,name1)!=0)Wo hast du den Wert für Session2 her ?
Bist du Kumpel von Hasso ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-211540-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html
-
Bing Bang schrieb:
Bist du Kumpel von Hasso ?
Der Gedanke kam mir tatsächlich auch schon...
-
habt ihr nichts zu tun ausser die anderen zu beobachten...
nicht zu fassen das gilt für _matze und Bing Bang
-
meister schrieb:
habt ihr nichts zu tun ausser die anderen zu beobachten...
nicht zu fassen das gilt für _matze und Bing BangHast du nix besseres vor, als mich zu beobachten oder was.
Nicht zu fassen.MuG,
B.B.