Datei über Winsock verschicken... Problem mit NULL-Terminator

Diskutiere Datei über Winsock verschicken... Problem mit NULL-Terminator im Developer Network Forum im Bereich Hardware & Software Forum; Hi Es ist zwar ein eher simples Problem, aber ich bring es einfach nicht fertig. Ich möchte eine Datei in ein char array (oder notfalls auch...
  • Datei über Winsock verschicken... Problem mit NULL-Terminator Beitrag #1
Niemand!

Niemand!

Bekanntes Mitglied
Dabei seit
18.03.2005
Beiträge
343
Reaktionspunkte
0
Ort
Schweiz
Hi

Es ist zwar ein eher simples Problem, aber ich bring es einfach nicht fertig.
Ich möchte eine Datei in ein char array (oder notfalls auch string) einlesen,
um die dann zu verschicken.
Wenn beim lesen dann eine '0' (NULL-Terminator) gelesen wird (was häufig
in Dateien vorkommt) dann bricht es ab, weil "er" denkt, das Ende sei
erreicht.

Wie kann ich das umgehen?

mfg
Niemand!
 
  • Datei über Winsock verschicken... Problem mit NULL-Terminator Beitrag #2
T

TrµMAn

Bekanntes Mitglied
Dabei seit
23.10.2006
Beiträge
4.882
Reaktionspunkte
2
Ort
Wuppertal
les die Datei einfach nicht zeichen für zeichen ein würde ich sagen
 
  • Datei über Winsock verschicken... Problem mit NULL-Terminator Beitrag #3
Niemand!

Niemand!

Bekanntes Mitglied
Dabei seit
18.03.2005
Beiträge
343
Reaktionspunkte
0
Ort
Schweiz
Ich lese es so ein:

Code:
ifstream file ("c:\\datei.bin", ios::in|ios::binary|ios::ate);

char * buffer;
long size;
size = file.tellg();
file.seekg (0, ios::beg);
buffer = new char [size];
file.read (buffer, size);
file.close();

cout << buffer << endl;

delete[] buffer;

Ausgegeben wird nur ein "]".
Wenn ich die Datei im Hexeditor öffne bestätigt sich genau meine Theorie,
es fängt nähmlich so an "]000000000df".... bla bla
Und irgendwie muss ich das Prob lösen, denn spätestens beim verschicken
hab ich das selbe Prob wieder.
 
  • Datei über Winsock verschicken... Problem mit NULL-Terminator Beitrag #4
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Das Problem ist nicht das Einlesen der Datei. Du brauchst ja nur mal mit dem Debugger durchzugehen, um das zu prüfen.
Wenn Du allerdings die Daten per cout ausgibst, dann werden die als C-String interpretiert (buffer ist vom Typ char *). Wenn an zweiter Stelle eine 0 ist, dann wird auch nur das erste Zeichen ausgegeben. Egal, wieviele Zeichen wirklich in buffer stehen.
 
  • Datei über Winsock verschicken... Problem mit NULL-Terminator Beitrag #5
Niemand!

Niemand!

Bekanntes Mitglied
Dabei seit
18.03.2005
Beiträge
343
Reaktionspunkte
0
Ort
Schweiz
Recht hast du :)

Habe jetzt den buffer durch eine for Schleife gejagt und alle NULL-Terminatoren
in Leerzeichen umgeschrieben und jetzt funktionierts!

Danke!
 
Thema:

Datei über Winsock verschicken... Problem mit NULL-Terminator

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben