array in eine dat Datei



  • 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 sollte

    if (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.


Anmelden zum Antworten