gesamtgröße bestimmen ?
-
Hallo alle

Mein c++ programm "läd" eine Datei in einen unsigned char.
Ich weiß das die datei 120.000 Bytes groß ist.Aber wie schaffe ich es jetzt, die größe meiner Datei nur anhand des unsigned chars(indem sich der Inhalt der Datei befinded) herauszufinden ??
Danke für eure Hilfe
Greetz
-
lolwurst schrieb:
Mein c++ programm "läd" eine Datei in einen unsigned char.
Ich weiß das die datei 120.000 Bytes groß ist.Nein. Ein unsigned char ist ein Byte. Was tust Du wirklich? Im Zweifel zeig etwas Code.
(Ganz allgemein: Zumeist musst Du beim Laden einfach mitzählen)
-
Warum muss es denn unbedingt nur anhand des uchars sein?
Verwende doch Boost.FileSystem
-
lolwurst schrieb:
...
Naja kommt drauf an wie du die Datei in dein Char lädst. Zeig doch mal wie du es die Datei da reinbekommst. Solltest du Byte für Byte in dein Char laden, kannst du einen Zähler mitlaufen lassen.
Klosteher schrieb:
Verwende doch Boost.FileSystem
Also einfach das Problem mit etwas vorhandenem lösen und in Unwissenheit versenken.
-
Ich reserviere Speicher für den Unsigned Char mit malloc
Bsp:
unsigned char* test = NULL;
test = malloc(200000)
test = dateiInhalt
-
Omg! Zeiger, Referenzen, primitive Datentypen, ... all das sollte man schon auseinander halten. Auch ist dein Code wohl kein Standard-C++. Falls du schon programmieren kannst, dann empfehle ich dir Die C++ Programmiersprache. Dort wirst du keine Antwort auf deine Frage finden, aber vielleicht genug Wissen, um deine Frage selbst zu beantworten.
-
lolwurst schrieb:
Aber wie schaffe ich es jetzt, die größe meiner Datei nur anhand des unsigned chars(indem sich der Inhalt der Datei befinded) herauszufinden ??
Danke für eure Hilfe
GreetzHi!
Es geht mit strlen, Bedingungen:
- Es befinden sich keine Nullbytes in der Datei.
- Dein Puffer ist 0-initialisiert.
- Dein Puffer hat mindestens ein Byte mehr als die Datei.Hat die Datei Nullbytes, brauchst du ne zweite Variable zum Speichern der Dateigröße, weil strlen nur bis zum ersten Nullbyte zählt. Ne zweite Variable solltest du in beiden Fällen spendieren.