zwei dateien miteinander vergleichen
-
@peter
Stimmt, es gibt noch performantere Lösungen. Am schnellsten wärs natürlich, wenn man jedes einzelne Zeichen mit fgetc() einliest und vergleicht.@Daniel
Wo genau liegt das Problem? Weißt du nicht wie man Dateien öffnet, ausliest, schließt, ... oder weißt du nicht wie man Strings mit strcmp() vergleicht?
-
Hallo,
liess in Bloecken von je 1024 Byte (oder wieviel du eben lesen moechtest. 512 oder
1024 sind in der Regel ok) und vergleiche sie mittels memcmp();.mfg
v R
-
naja, irgendwie habe ich schon probleme mit dem code. vieleicht könnte einer ein paar zweilen code beifügen.
vielen dank
daniel
-
Schau Dir mal diff an. Das ist genau das, was Du suchst...
-
danke dir,
gibts das aber auch für windows plattformen????
mfg daniel
-
der vorschlag von virtuell Realisticer war doch ziemlich gut
ungetestet so ins forum gehackt
int flag=1,x,y; FILE *fp1,*fp2; char buffer1[1024]; char buffer2[1024]; char filename1[]="test.abc" char filename2[]="test2.abc" fp1=fopen(filename1,"rb"); fp2=fopen(filename2,"rb"); while(!feof(fp1)&&!foef(fp2)&&flag){ x=fread(buffer1,1,1024,fp1); y=fread(buffer2,1,1024,fp2); if(x-y)flag=0;else flag=!memcmp(buffer1,buffer2,1024); } flcose(fp1); fclose(fp2); if(flag) //dateien gleich else //dateien nicht gleich
-
Windalf schrieb:
if(x-y)flag=0;else flag=!memcmp(buffer1,buffer2,1024);
*lol* (das x-y ist echt genial)
ich wuerde das so schreiben:
if(x!=y || memcmp(buffer1, buffer2, x)) break;
-
@Shade Of Mine
das ist so ne macke die man sich angwöhnt wenn man manchmal versucht eine funktion zu schreiben die eine aufgabe mit möglichst wenig ascii-zeichen zu verwenden.
auf www.cplusplus-forum.de haben wir so ne rätselecke wo ein gewisser Oxdeadbeef das sogenannte C-golfen eingeführt hat. es wird irgend ne aufgabe gestellt und der die mit den wenigsten ascii-zeichen löst gewinnt. Ist manchmal erstaunlich was man so alles mit 100 Asciizeichen für funktionalität darstellen kann. (Nur vestehen kanns der lesende dann kaum noch)
hmm das hast du ja gleich nen bug bei mir rausgeschossen der mir spontan gar nicht aufgefallen ist. kommt davon wenn man direkt ins forum postet
die version mit der veroderung ist allerdings elegantergreetz Windalf
-
vielen dank an alle die was geschrieben haben. nach dem programm von Windalf
und der verbesserung von Shade Of Mine funzt das richtig gut. besten dankdaniel
-
Windalf schrieb:
@Shade Of Mine
das ist so ne macke die man sich angwöhnt wenn man manchmal versucht eine funktion zu schreiben die eine aufgabe mit möglichst wenig ascii-zeichen zu verwenden.
auf www.cplusplus-forum.de haben wir so ne rätselecke wo ein gewisser Oxdeadbeef das sogenannte C-golfen eingeführt hat. es wird irgend ne aufgabe gestellt und der die mit den wenigsten ascii-zeichen löst gewinnt. Ist manchmal erstaunlich was man so alles mit 100 Asciizeichen für funktionalität darstellen kann. (Nur vestehen kanns der lesende dann kaum noch)
sowas ist natuerlich hin und wieder lustig, ich wuerde das aber nicht zu exzessiv machen - denn das verdirbt den stil gewaltig (wie du unschwer an dem if(x-y) erkennen kannst)