array in eine dat Datei
-
Hallo habe jetzt noch ein Problem bei meinem Programm.
Möchte gerne folgendes Array infstream File("Daten.dat", ios::out|ios::binary);speichern:
float hoehenwert [3000] [100];Mit dieser Zeile kann ich den folgenden struct speichern
File.write((const char*)&Pers, sizeof(Pers));struct PERSON { char VorName[20]; char NachName[20]; int TelNr; };Doch hab ich keine Ahnung wie ich das für mein Array umändern kann.

Wäre echt cool wenn mir da jemand helfen könnte und die Sache vielleicht auch ein bisschen erklären könnte so das ich das auch auf andere Strukturen anwenden kann
-
achso wollte auch noch die beiden int variablen
int anzahlx, anzahly;in die Daten.dat schreiben
Muss ich das machen wenn ich das Array in die Datei schreibe, da er sonst das array überschreibt oder kann ich das extra tun, solange die Daten nicht mit close geschlossen sind?
-
Wie wärs mit selbst probieren ?
Kurt
-
Probiere hier schon ne ganze Weile und der schreibt dass Array nicht mit write, bin lamgsam der Meinung dass mit fstream keine Arrays zu speichern sind. Und überhaupt was ist denn das für ne Antwort dieses Forum ist doch dazu da dass man sich untereinander Hilft
-
Oliver1980 schrieb:
Schade dachte dass ich in diesen Forum Hilfe bekomme. Aber das ist ja leider überhaupt nicht so, wirklich nicht sehr hilfreich hier
Glaubst du wirklich dass dass es in diesem Forum jemand gibt der dir helfen muss?
Oliver1980 schrieb:
Und überhaupt was ist denn das für ne Antwort dieses Forum ist doch dazu da dass man sich untereinander Hilft
Na dann hilf mir mal und erkläre was du versucht hast und was dabei nicht funktioniert.
Oliver1980 schrieb:
achso wollte auch noch die beiden int variablen
int anzahlx, anzahly;in die Daten.dat schreiben
Muss ich das machen wenn ich das Array in die Datei schreibe, da er sonst das array überschreibt oder kann ich das extra tun, solange die Daten nicht mit close geschlossen sind?Was funktioniert dabei nicht ? Hast du überhaupt schon irgendwas versucht ? Wär dir die Antwort "Das kann man hintereinander machen." lieber gewesen ?
Zeige etwas code dann wird sich sicher jemand finden der deine Fehler korrigiert. Fertige Lösungen (wenn eine vernünftige Spezifikation vorhanden ist) gibts im Projekte-Forum nach Einwurf kleiner Münzen.
Kurt
-
Glaube nicht dass mir hier jemand helfen muss, das habe ich nie behauptet. Fand nur die schlechte Resonanz schade. Aber das wurde ja danach schon aus führlich diskutiert und ich habe mich ja für meine vor eilige Nachricht schon entschuldigt. Na gut dann gebe ich jetzt den Code den ich habe wollte es einfacher machen rein zu kommen mit Kürzung aber das ist mir wohl nicht gelungen.
#include "stdafx.h" #include <iostream> #include <fstream> using namespace std; int anzahlx, anzahly; float hoehenwert [3000] [100]; int main() { // cout << "anzahl der x Werte: "; // cin >> anzahlx; //cout << "anzahl der y Werte: "; //cin >> anzahly; fstream File("Daten.dat", ios::out|ios::binary); if (File.is_open()) { // Nur zwei Datensätze schreiben. // Hier wäre eine Fehlerprüfung angebracht for (int i = 1; i < anzahlx ; i=1*5) { for (int i2 = 1; i < anzahly ; i=i*5) { if (i < 1000 || i> 2000) hoehenwert [i] [i2] = 10; else hoehenwert [i] [i2] = 6; } } // Aktuelle Position in der Datei speichern. File.write(hoehenwert, sizeof(hoehenwert)); //<--klappt nicht } File.close(); // Datei schließen } fflush(stdin); getchar(); return 0; }So da sitz ich jetzt 2 volle Tage drann und hab nicht sonderlich viel erreicht. Habe super lange gesucht wie ich Arrays speichern kann aber nicht gefunden. Vielleicht siehst du ja den Fehler
-
File.write((char*)&hoehenwert[0][0], sizeof(hoehenwert)); //<--klappt
-
OK haut hin damit hast du mir das Wochenende geretet. Werd jetzt gleich mal probieren die Datei aus zu geben. Also tausend dank nochmal

-
Hmm das gute ist 0 Fehlermeldungen das schlechte ist die Datei ist leer. Er schreibt gar nichts rein
int anzahlx, anzahly; float hoehenwert [3000] [100]; int main() { // cout << "anzahl der x Werte: "; // cin >> anzahlx; //cout << "anzahl der y Werte: "; //cin >> anzahly; fstream File("Daten.dat", ios::out|ios::binary); if (File.is_open()) { // Nur zwei Datensätze schreiben. // Hier wäre eine Fehlerprüfung angebracht for (int i = 1; i < anzahlx ; i=1*5) { for (int i2 = 1; i < anzahly ; i=i*5) { if (i < 1000 || i> 2000) {hoehenwert [i] [i2] = 10; File.write((char*)&hoehenwert[i][i2], sizeof(hoehenwert)); } else { hoehenwert [i] [i2] = 6; File.write((char*)&hoehenwert[i][i2], sizeof(hoehenwert)); } } } // Aktuelle Person in der Datei speichern. } File.close(); // Datei schließen
-
anzahlx und anzahly ist wohl 0.
Ausserdem willst du wahrscheinlich nicht jedesmal das ganze array ( 300 000 floats ) schreiben.
Denke es sollteif (i < 1000 || i> 2000){ hoehenwert [i] [i2] = 10; File.write((char*)&hoehenwert[i][i2], sizeof(float)); } else {Kurt
BTW
for (int i = 1; i < anzahlx ; i=1*5) { // i nach 1.durchlauf auf 5 setzen ?? for (int i2 = 1; i < anzahly ; i=i*5) // sollte da nicht i2 vorkommen ?Kommt mir etwas komisch vor.