Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Binäre Dateien

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.07.2003, 16:34 Uhr
Oliver
S2-Pixelgeneral


Hi,

ich bins mal wieder.
Ich wollt mir mal ein Spiel programmieren (Master Mind, ihr kennt es sicher)

Jedenfalls wollt ich da eine Highscorliste machen, die binär abgespeichert wird.
Ich wollte mal vorher zur Übung erstmal ein kleines Konsoleprogramm machen, wo man Dateien binär schreibt, bzw. lesen kann.

Es geht aber nicht, es wird immer als normale Textdatei gespeichert. :(

Ich hoffe ihr könnt mir helfen, hier der Code:


C++:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
#define newline "\n"
#define nextline "\n\n"
#define line2 "\n\n\n"
#define line5 "\n\n\n\n\n"

int main()
{

    // Variablen
    unsigned short befehl;
    char dateiname[101];
    char inhalt   [10000];
    ofstream of;


    cout << " / / Binary.exe, Programm zum Schreiben und lesen von binären Dateien \\ \\ " << line5;
    for( ; ;)
   {
    cout << "<< Hauptmenu >>\n\n"
         << "Datei schreiben <1>\n"
         << "Datei lesen     <2>\n"
         << "Der grosse Text <3>\n"
         << "Beenden         <0>\n\nIhre Eingabe: ";
    cin >> befehl;
    
    switch(befehl)
    {
    case 0:
        return 0;
    case 1:
        cout << nextline
             << "Dateiname: ";
        cin >> dateiname;
        cout << nextline
            << "Nun der Inhalt: " << line2;
        cin >> inhalt;
        of.open(dateiname,ios_base::out|ios::binary);
        if(!of.good()) cout << "Die Datei " << dateiname << " ist noch nicht erstellt. Sie wird jetzt erstellt.";
        of.write(inhalt,strlen(inhalt));
        of.close();
        break;
    }
    // ...
    }
    cin.get();
    return 0;
    
}


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 03.07.2003 um 18:28 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.07.2003, 18:39 Uhr
virtual
Sexiest Bit alive
(Operator)


Was ist denn an den Dateien nicht bnär. Vielleicht erwartest Du da zuviel als Unterschied.
Wenn Du binär schreibst/liest werden die Daten genauso gelesen, wie Du sie geschieben hast. Bei Text Dateien erfolgt eine Umsetzung der Zeilenumbrüche auf die betriebssystemspecifischen Zeilenumbrüche. Unter Windows/DOS gibt es wohl noch das fragwürdige Verhalten, daß bestimmte Zeichen im Textmodus als Dateiende interpretiert werden, ka.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.07.2003, 18:43 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@virtual
Ich vermute mal das der Zahlen nicht als einzelne Ascii-Zeichen speichern will sondern als 4byte

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.07.2003, 18:57 Uhr
Oliver
S2-Pixelgeneral


Na ich will sozusagen eine "verschlüsselte" Datei, die man nicht ändern kann.
Ich will nicht, dass jeder die Datei nach seinen Belieben verändern will und z.B seinen Namen als Erster einträgt.

Aber wenn ich in die Datei gucke ist normaler Text.

Ich will, dass so as in der Art drinne steht:

MdeT   4 4  $    ~Ã¥½™Ã~   ~ÿÿÛÿÃçÿ~   Dîþþþ|8   8|þþ|8   <<ÿçç~   <~ÿÿ~~   <~~<   ÿÿÿÿÃÃÿÿÿÿ  <~fBBf~<
ÿÿÙ½½™Ãÿÿ
>:røÌÌÌx <fff<~
xøp
 ccccgçæÀ   Û~çç~Û   €ÀàøþøàÀ€   >þ>   <~~<   fffff ff   ÛÛÛ{   ~c0<ff< Æ~   þþþ   <~~<~   <~   ~<    þ    0`þ`0   ÀÀÀþ   $fÿf$   88||þþ   þþ||88


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.07.2003, 19:00 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


dann verschlüssel die z.b. einfach mit dem rot13 von beefys rästel
hier
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.07.2003, 19:09 Uhr
Oliver
S2-Pixelgeneral


Aber wieso geht das nicht binär?

An so eine Verschlüsselungsmethode habe ich auch schon gedacht, aber geht das nicht anders?

Ich will halt einfach, dass es nicht so aussieht


Code:
Oliver
Thomas
Stefan
Georg
10050
405
392
231



Und wie kann man überhaupt Leerzeichen mitlesen, wenn ichs mit so einer Verschlüsselung mache?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.07.2003, 19:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


probier mal folgendes:


C++:
char text[] = "Hallo Test";

ofstream out;
if(out.open("test.bin",ios_base::out|ios::binary))
{
    for(int x = 0; x < strlen(text); x++)
    {
        out << (int)text[x] << " ";
    }
    out.close();
}


Das müsste wenigstens alle Buchstaben in seine ASCII-Codes zerlegen...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.07.2003, 20:12 Uhr
~Alf_At_Work
Gast


Hy!

Gespeichert werden immer nur einsen und nullen. Die Frage ist wie man die Interpretiert. Ein Text-Editor vergleicht den Wert von je 8 Bit´s mit der ASCII-Tabelle und zeichnet das entsprechende Zeichen auf den Bildschirm.
Wenn du nun "O" Speicherst dann schreibt er ein Byte mit dem Wert 79 in die Datei. Egal ob binär oder anders. Du must also den Wert verändern den du speicherst. Z.B. indem du den wert des Zeichen mit -1 multipizierst. Wenn du die Datei so im Text-Editor öffnest steht da nur Müll.
Beim einlesen dann einfach noch mal *-1 und es stimmt wieder.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.07.2003, 20:14 Uhr
~Alf_At_Work
Gast


Das Beispiel ist natürlich leicht zu knacken.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: