Größe von Textdateien reduzieren
-
unskilled schrieb:
in C++ nutzt man im übrigen Streams um in eine Datei zu schreiben:
Das schöne ist, dass es von boost die gängigen Kompressionsalgorithmen auch noch einmal als Stream gekapselt gibt. Das heißt, man muss nur das Streamobjekt austauschen und hat instant eine komprimierte Datei als Ausgabe.
Da du schon mit fprintf angefangen hast, nützt dir das natürlich herzlich wenig. So ein bisschen muss ich sagen: Selbst schuld. Willst du etwas vergleichbares mit fprintf erreichen, müsstest du das Standard fprintf mit einer eigenen Version ersetzen (mag gut sein, dass es dafür auch schon eine C Bibliothek gibt).
-
Also erst mal Danke an Alle,
mein Grundlegendes Problem ist eigentlich das ich nicht verstehe wie es Textdateien geben kann die weitaus mehr Zeichen beinhalten als meine aber nicht mal größer als 1MB sind.
Zu der Frage oben wegen der Problematik:
Das Programm erstellt alle möglichen Permutation aus einer beliebigen Zeichenkette. Diese Permutationen möchte ich in, wenn es geht, EINER Textdatei speichern. Das Problem ist nur das man eine Textdatei mit 5GB nicht gut lesen/öffnen kann. Die Verwendung der Strings ist lediglich das Lesen zur Kontrolle sonst nichts.
MFG
V.R.
-
von wie vielen zeichen sprechen wir denn?
5 -> 5! *5 Zeichen => 600Byte
8 -> 8! *8 Zeichen => 322KByte
12->... => 5,7GByteund da sind noch nicht mal die Zeilenumrbüche eingerechnet...
bb
PS: Für die permutationen gibt es ne schöne fertige Fkt.: http://www.cplusplus.com/reference/algorithm/next_permutation/
-
VRComputing schrieb:
Das Problem ist nur das man eine Textdatei mit 5GB nicht gut lesen/öffnen kann.
Doch, kann man genauso schnell öffnen und genauso schnell überall lesen, nur alles auf einmal einlesen braucht natürlich länger.
-
bbee schrieb:
VRComputing schrieb:
Das Problem ist nur das man eine Textdatei mit 5GB nicht gut lesen/öffnen kann.
Doch, kann man genauso schnell öffnen und genauso schnell überall lesen, nur alles auf einmal einlesen braucht natürlich länger.
ich denke, er redet vom einlesen weil er das öffnen mit wordpad(bzw notepad, das ich bei so großen dateien nicht mehr empfehlen würde^^) meinte - zumindest schrieb er danach, dass er die datei nur haben will, um die permutationen durchzugucken.
bb
-
VRComputing schrieb:
Das Problem ist nur das man eine Textdatei mit 5GB nicht gut lesen/öffnen kann.
Nicht mit notepad.exe
Aber kannsttype dateinamemachen oder einen anderen Angucker nehmen, zum Beispiel den far file manager.
-
Wir sprechen hier von !n Zeichenketten mitn Zeichen plus 1 newline nach jeder Zeichenkette.
Und ja ^^ ich hatte Probleme die Dateien mit Word,Editor,Wodpad oder was auch immer noch gibt zu öffnen...
-
was sind !n Zeichen?
wie ich an den 3 beispielen oben schon klargemacht habe, ist es einfach nicht möglich, alle kombinationen zu speichern.
vermutlich wird bei 14zeichen deine platte eh schon voll sein und selbst eine schnelle platte wird zum kompletten einlesen der datei locker 10 minuten brauchen.bb
-
!n = 1*2*3*...*n Zeichen
! Heißt Fakultät und steht für die Menge aller möglichen Permutationen oder umgspr. "Kombinationen".
D.h. man hat bei 3 zeichen !3 Permutationen also 1*2*3 = 6
Soll das heißen es gibt keine Möglichkeit Zeichen noch kleiner zu machen?
-
VRComputing schrieb:
!n = 1*2*3*...*n Zeichen
! Heißt Fakultät und steht für die Menge aller möglichen Permutationen oder umgspr. "Kombinationen".
D.h. man hat bei 3 zeichen !3 Permutationen also 1*2*3 = 6
Soll das heißen es gibt keine Möglichkeit Zeichen noch kleiner zu machen?
hast du mein posting überhaupt gelesen?
myself schrieb:
von wie vielen zeichen sprechen wir denn?
5 -> 5! *5 Zeichen => 600Byte
8 -> 8! *8 Zeichen => 322KByte
12->... => 5,7GByte1. heißt es n!
2. wollte ich in dem posting die genaue zahl der zeichen erfahren - da nützt mir ein n herzlich wenig, so klug war ich auch davor schon...doch, man kann sie kleiner machen:
-binär schreiben
oder
-komprimieren
oder
-nur jede x-te Permutation speichernin jedem Fall würde man ein kleines Programm zum betrachten schreiben müssen.
wenn man nur jede x-te permutation speichert, muss man eben aufpassen, wie man x wählt, um in annehmbarer zeit an die y-te permutation zu kommenbb
-
Alles klar ^^
kann sein das ich mich verlesen habe und Danke für die Korrektur...
Ich gebe mich nun zufrieden.MFG
V.R.