Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Verständnisfrage zu fwrite

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
30.04.2006, 20:04 Uhr
chw1234



Hallo,

ich möchte eine Datei erstellen die den Namen „payload_xxx.txt“ hat. Xxx steht für eine Zahl die ich aus einer ComboBox erhalte. Die Datei soll nun so groß sein, wie die Zahl die ich in die ComboBox eingebe bzw. auslese. Die Datei soll max. 65 kB groß sein. Nun habe ich das mit fwrite gemacht, doch ich hatte das Problem dass alle Dateien bis 49 kB einwandfreierstellt wurden – danach immer nur mit 0 kB. Der Code sieht so aus:


C++:
FILE *datei_ptr;
char buffer[] = "Steht was drinne ...";
datei_ptr=fopen("C:\\temp\\payload\\payload_"+m_ComboStr+".txt","wb");
fwrite(buffer,CBText,1,datei_ptr);
fclose (datei_ptr);



Da es nicht ging habe ich es nun anders gelöst. Mit diesem Code funktioniert es nun einwandfrei.


C++:
CString StrToInt = m_ComboStr;
double CBText=atoi(StrToInt);
if (CBText>65535)
    {
        CBText = 65535;
        m_ComboStr = "65535";
    }
CString h = "";
CString i = "X";
for(int a=0;a<CBText;a++)
    {
        h = h+i;
    }
fstream f;
f.open("C:\\temp\\payload\\payload_"+m_ComboStr+".txt", ios::out);
f << h;
f.close();
// Fügt Wert der ComboBox hinzu
m_Combo.AddString(m_ComboStr);



Nun meine eigentliche Frage: WARUM geht es mit dem ersten Code nicht ???? Ich habe nie etwas über eine Größenbegrenzung bei fwrite gelesen. Jetzt würde ich gerne verstehen warum mein erster Code nicht funktioniert kann mir jemand das sagen ??

Gruß
Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.04.2006, 21:53 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von chw1234:
kann mir jemand das sagen ??


Nein, zumindest solange nicht wie das erste Beispiel unvollständigst und wir raten müssen was z.B. CBText ist...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.05.2006, 09:51 Uhr
chw1234



Hallo,

sorry hatte ich vergessen ! CBText ist aber nur der Wert der in der ComboBox steht (die Membervariable).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.05.2006, 10:33 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,

Zitat von chw1234:


C++:
FILE *datei_ptr;
char buffer[] = "Steht was drinne ...";
datei_ptr=fopen("C:\\temp\\payload\\payload_"+m_ComboStr+".txt","wb");
fwrite(buffer,CBText,1,datei_ptr);
fclose (datei_ptr);




Wenn CBText eine Membervariable vom Typ CComboBox ist, dann sollte sich die Zeile:

C++:
fwrite(buffer,CBText,1,datei_ptr);


nicht kompilieren lassen (sollte!), da als zweiter Parameter ein unsigned integer erwartet wird.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 01.05.2006 um 10:39 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.05.2006, 11:33 Uhr
Tommix



Hallo,

Zitat von chw1234:

C++:
double CBText=atoi(StrToInt);



Da ist wohl irgendwas durcheinander geraten. fwrite würde ein size_t erwarten, kein double. Ich vermute nach Deiner Beschreibung eher, daß atoi tatsächlich 0 liefert, weil der übergebene Parameter keine Zahl ist. Setzte doch einfach mal einen Breakpunkt rein und sieh Dir die Werte der Variablen an.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: