Indexdatei erstellen
-
Also ich hab mit fwrite eine Datei erstellt und kann sie mit fread auch wieder auslesen. Auch fseek hab ich mir auch eingebaut. Das Funktion soweit alles und jetzt zu meinem Problem. Ich brauch noch eine Indexdatei über die ich die Datensätze der anderen Datei suchen kann. Leider weiß ich nicht wie.
Kennt jemand ein nettes Tourial wie man das programmiert oder kann mir jemand sont wie weiterhelfen.
-
Die Frage ist erstmal was das für Daten sind
(z.b. 3 Beispielzeilen)
Und dann, nach was man suchen kann. Z.b. aus welcher Kategorie oder so.
-
ich glaube du brauchst eine datenbank
Sonst brauchst du eine datei mit formatierung, damit dein prog es richtig auslesen kann und du in deine db auch schreiben kannst.
schau dir das buch C von A bis Z da muss es irgendwo drin sein
kannst auch herunterladen
-
Also ich hab eine Struktur, z.B.
struct Zahlen{ int zahl1; int zahl2; } z;
die schreib ich in eine Datei und zwar so
FILE *f1; if ((f1 = fopen("zahl.dat", "r+b")) == NULL) { if ((f1 = fopen("zahl.dat", "w+b")) == NULL) { fprintf (stderr, "Datei zahl.dat kann nicht geöffnet werden\n"); exit(1); } } z.zahl1 = 10; z.zahl2 = 20; fseek (f1, 0, SEEK_END); fwrite (&z, sizeof(struct Zahlen), 1, f1); fclose(f1);
Jetzt muß ich noch eine Indexdatei erstellen in der ich die die zahl1 und deren Adresse speichere damit ich in der zahl.dat Datei den Datensatz schenller finden kann. Aus Datenbank sicht wäre zahl1 dann identifizierend.
Gibts da spezielle Funktionen um das bewerkstelligen, oder nutzt ich da auch fwrite, fseek und fclose. Ok ich speicher dann zahl1 auch in die Indexdatei, aber wie komm ich an die Adresse?
-
mit ftell() könntest du dir die aktuelle Position in der Datei beschaffen - aber ich denke mal, in deinem Fall geht es schneller, direkt in der Datei zu suchen (weil die Index-Datei vermutlich genauso groß wird wie die Daten-Datei - und dort mußt du auch erstmal deinen Schlüssel finden).
-
Ok danke, ich versuchs mit ftell.
Mit der Schnelligkeit hast du sicher recht, aber es soll nur eine Übung sein um den Umgang mit Dateien zu üben.
-
Aber denk dran, du solltest vermutlich erst ftell aufrufen und dann die Daten speichern - sonst verweist deine Index-Adresse nicht auf den Eintrag zu zahl1, sondern auf den in der Liste folgenden Eintrag