falsche ausgabe, warum?
-
Warum kriege ich hier immer falsche werte zurück?
#include <iostream> #include <fstream> #include <windows.h> #include <iomanip> #include <conio.h> using namespace std; int main(){ cout << "Programstructure---\n\n"; fstream in("C:\\a.exe", ios_base::binary); ofstream of("C:\\a.exe"); in.seekg(0L,ios_base::end); unsigned long size = streamoff(in.tellg()); cout << "current size: " << size; of << "111111"; of.close(); in.seekp(0L,ios_base::end); unsigned long Asize = streamoff(in.tellg()); cout << "\nnew size: " << Asize; double percent = (Asize / size) * 100; cout << "\n%: " << setprecision(2) << fixed << percent << "%"; Sleep(10000); getch(); }
-
Könntest du auch sagen was für falsche Werte du bekommst?
-
viel zu hohe. und beide sind gleich.. und bei % ist es immer 100%
-
Hast du schonmal geguckt, ob die Dateien richtig geöffnet wurden?
z.B. so:
assert(in);
oder so
if(!in) { cerr << "Fehler!"; return 1; }
mfg.
-
Es meldet einen Fehler. Übrigens kann ich nach der Programmausführung nicht mehr das Zielprogramm(a.exe) löschen.
-
tokto schrieb:
Es meldet einen Fehler.
Und welchen Fehler?
tokto schrieb:
Übrigens kann ich nach der Programmausführung nicht mehr das Zielprogramm(a.exe) löschen.
Versuch mal
in.close();
am Ende.
-
EEK schrieb:
tokto schrieb:
Es meldet einen Fehler.
Und welchen Fehler?
wahrscheinlich ein assert
tokto schrieb:
Übrigens kann ich nach der Programmausführung nicht mehr das Zielprogramm(a.exe) löschen.
Versuch mal
in.close();
am Ende.
Wird automatisch vom Destrkutor gemacht.
mfg.
-
Was mir gerade auffällt:
fstream in("C:\\a.exe", ios_base::binary);
Dabei wird weder das ios::in noch das ios::out bit gesetzt! Versuch mal folgendes:
ifstream in("C:\\a.exe", ios_base::binary);
Außerdem solltest du die gleiche datei nicht gleichzeitig zweimal öffnen.
mfg.
-
double percent = (Asize / size) * 100;
ist unsinning, da (Asize / size) immer ein ganzzahliger Wert ist.
Besser:
double percent = (static_cast<double> (Asize) / size) * 100;