Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Sheddex
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
CCharacter Hero; Hero.CreateHero (); cout << endl << "Beliebige Taste druecken" << endl; getch (); system ("cls"); SaveCharacter (); ofstream Output ("Character.save", ios::binary); Output.write ((char*) &Hero, sizeof (Hero)); Output.close (); |
Sheddex
unregistriert
C-/C++-Quelltext |
|
1 2 3 |
ifstream Input ("Character.save", ios::binary); Input.read ((char*) &Hero, sizeof (Hero)); Input.close (); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
#include <stdio.h> #include <string.h> typedef struct MSDS { int key; char name[30]; } MySafeDataStructure; __int32 main(void) { FILE* pFile = NULL; MySafeDataStructure mdata[20]; // 20 Speichereinträge mgl. int read = 0; // Wie müssen uns jetzt eine Dateistruktur ausdenken. // Diese ist nicht besinders gut, aber fürn Anfang reichts: // // // Anfang der Datei: // Typen | Sinn //---------------------------------------------------- // (int) | Anzahl der Speicherinträge // (MySafeDataStructure) | Speichereinheit 0 // (MySafeDataStructure) | Speichereinheit 1 // (MySafeDataStructure) | Speichereinheit 2 // (MySafeDataStructure) | Speichereinheit 3 // ... bis speichereinheit 20. if(!(pFile = fopen("test.dat", "w"))) { printf("Datei konnte nicht geschrieben werden"); return 0; } printf("Datei geoffnet\n"); // Struktur ausfüllen mdata[0].key = 34; strcpy(mdata[0].name, "test"); // Wir haben einen gültigen eintrag read=1; // ein Int, also 4Byte in den Anfang der Datei fwrite(&read, sizeof(__int32), 1, pFile); // dann noch alle 20 Einträge hinein! fwrite(mdata, sizeof(MySafeDataStructure), 20, pFile); // und schon fertig.... war doch gar nicht so schlimm :) printf("schreiben abgeschlossen\n"); // Schliessen, Pointer auf NULL nicht vergessen fclose(pFile); pFile = NULL; printf("Datei geschlossen\n\n"); // und jetzt das gemurks wieder lesen.... // Datei wieder öffnen.... if(!(pFile = fopen("test.dat", "r+"))) { printf("Datei konnte nicht geöffnet werden"); return 0; } printf("Datei wieder geoeffnet\n"); // nzahl der gültigen Speichereinheiten lesen... fread(&read, sizeof(int), 1, pFile); // Alle speichereinheiten nun noch... fread(mdata, sizeof(MySafeDataStructure), 20, pFile); printf("lesen abgeschlossen\n"); // Schliessen, Pointer auf NULL nicht vergessen fclose(pFile); pFile = NULL; printf("Datei geschlossen\n\n"); // Nun noch die Ausgabe :) for(__int32 i = 0; i< read; i++) { printf("Speichereinheit: %d \n key: %d\n name: %s\n\n", i+1, mdata[i].key, mdata[i].name); } scanf("%d", &read); } |
Sheddex
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int a = 100; // Beispielvariable ofstream Output ("Test.txt"); // Lege die Datei "Test.txt" an Output.write ((char*) &a, sizeof (a)); // Speichere den Wert von a ab Output.close (); // Stream schließen a = 0 // Erzwingen das a = 0 ist ifstream Input ("Test.txt"); // Öffne die Datei "Test.txt" Input.read ((char*) &a, sizeof(a)); // Lies den Wert von a und weise ihn der Variable zu Input.close (); // Stream schließen cout << a << endl; // Beweis das a wieder = 100 ist! |
C-/C++-Quelltext |
|
1 2 3 4 5 |
if (Input == NULL) { std::cout << "Fehler beim oeffnen von " << Dateiname << "\a" << std::endl; // \a ist ein Piepton, std:: nur schreiben wenn du using namespace std nicht verwendest! std::cout << "Program abort!" << std::endl; } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
char buffer[50]; // Dateiname in String sprintf (buffer, "Test.txt"); // Zuweisung des Dateinamens ifstream Input (buffer); // Öffne die Datei "Test.txt" cout << buffer; // Dateiname nennen |
Werbeanzeige