komisches mit fread
-
Hallo!
Wenn ich eine z.B. ein Bitmap im Binär Modus öffne und sie dann mit fread auslesen lasse, zeigt der mir nur die erste Zeile an. Woran liegt das? Ich habe im BCB Forum schon gelsen, das es womöglich am Nullbyte liegt und das man da irgedwas gegen tun soll aber ich habe keine Ahnung wie ich das anstellen soll.
Ziel ist es die eingelesene Datei in einen AnsiString zu tun.
Das Notepad zeigt mir die Datei doch auch mit allen Wirren Zeichen an, wieso tut denn C++ das nicht?
-
Hi
Weil c/c++ das Zeichen '\0' in einem char* als Stringende wertet.
Das heist, dass auch nur bis zum ersten '\0' Zeichen ausgegeben werden.
Ich weiss leider nicht genau ob std::string genauso verfährt.
Aber wenn nicht kannst du es damit probieren.
-
Das problem liegt wohl weniger an der Speicherung, bzw. am Lesen, sondern daran dass die meisten Ausgaberoutinen nur solange ausgeben, bis sie auf eine 0 treffen.
-
Hmm, ich werde wohl nicht der erste sein der so ein Problem hat, oder? Hat nicht mal jemand einen funktionierenden Code? Andere würden sich bestimmt auch darüber freuen!
Gruß:
-
char* binarydata;
for(;i < length; ++i)
cout << *(binarydata + i);
-
Danke für den Code, allerdings ist das doch etwas lahm, gibt es da keine schneller Möglichkeit?
-
Hi
wie bestimmst du die länge ?
strlen zählt doch auch nur bis zum ersten 0 byte.
Genau wie bei der Ausgabe.
-
die Länge kann man aus dem Rückgabewert von fread erhalten.
-
Hi
Oje. Stimmt ja.
Also vergesst was ich gesagt hab.