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
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 |
#include <iostream> #include <fstream> using namespace std; #define FILEPATH "Test.txt" void main(void) { // Checke ob die Datei existiert! fstream File(FILEPATH, ios_base::in | ios_base::binary); if(File.good() == false) // Datei existiert nicht! { File.clear(); File.open(FILEPATH, ios_base::out | ios_base::binary); int Zahl = 0; cout << "Bitte geben sie eine Zahl ein : "; cin >> Zahl; File.write((char*)&Zahl, sizeof(Zahl)); File.close(); } else // Datei existiert! { int Zahl = 0; File.read((char*)&Zahl, sizeof(Zahl)); cout << "Datei gelesen - Zahl : " << Zahl << endl; File.close(); } } |
Zitat von »"Nexus"«
Nein, sollte man nicht, schon gar nicht mit einer plattformabhängigen Funktion (bzw. Makro). Einen Sinn hat das Nullsetzen eines Zeigers nur, wenn dieser explizit als ungültig dargestellt werden soll und man lesend darauf zugreift. Wenn man ihn im nächsten Zug gleich überschreibt oder er den Scope verlässt, ist das unnötig.Zitat von »"koschka"«
Deswegen sonnte man auch alle Zeiger mit ZeroMemory leeren, bevor man sie benutzt
Aber so oft sollte man in C++ eigentlich nicht mit rohen Zeigern hantieren, dass man sich deswegen dauernd Gedanken machen muss.
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
// Hier wurde der Aufruf der Funktion weggelassen ifstream Input ("Zahl.zhl", ios::binary); Input.read ((char *) &Zahl, sizeof (Zahl)); //Zahl aus Input anzeigen cout << "Zahl: " << Zahl << endl; Input.close(); |
Quellcode |
|
1 2 3 4 |
c:\dokumente und einstellungen\administrator\eigene dateien\programmieren\programme_i\test12\test12\test12.cpp(26) : error C2065: 'Zahl': nichtdeklarierter Bezeichner c:\dokumente und einstellungen\administrator\eigene dateien\programmieren\programme_i\test12\test12\test12.cpp(26) : error C2065: 'Zahl': nichtdeklarierter Bezeichner c:\dokumente und einstellungen\administrator\eigene dateien\programmieren\programme_i\test12\test12\test12.cpp(26) : error C2070: ''unknown-type'': Ungültiger sizeof-Operand c:\dokumente und einstellungen\administrator\eigene dateien\programmieren\programme_i\test12\test12\test12.cpp(28) : error C2065: 'Zahl': nichtdeklarierter Bezeichner |
Quellcode |
|
1 |
int zahl; |
C-/C++-Quelltext |
|
1 |
Zahl = Input;
|
Quellcode |
|
1 |
c:\dokumente und einstellungen\administrator\eigene dateien\programmieren\programme_i\test12\test12\test12.cpp(28) : error C2440: '=': 'std::ifstream' kann nicht in 'int' konvertiert werden |
Zitat von »"FLO2"«
Warscheinlich weil Input ein char ist.
C-/C++-Quelltext |
|
1 2 3 4 |
int i; ifstream Input("Datei.dat", ios::binary); Input.read((char*) &i, sizeof(i)); 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 |
// read a file into memory #include <iostream> #include <fstream> using namespace std; int main () { int length; int a; char * buffer; ifstream is; is.open ("test.txt", ios::binary ); // get length of file: is.seekg (0, ios::end); length = is.tellg(); is.seekg (0, ios::beg); // allocate memory: buffer = new char [length]; // read data as a block: is.read (buffer,length); // convert the buffer into a number a = atoi (buffer ); is.close(); cout.write (buffer,length); delete[] buffer; return 0; } |
Werbeanzeige