Datei auslesen und in ein char * packen
-
moin
ich hab ein problem...
und zwar möchte ich gern eine datei öffnen und auslesen und das gelesene eins zu eins in einen char * packen ...öffen tu ich sie wie folgt:
if(f.Open(file_name,CFile::modeRead | CFile::typeBinary)) { }nur wie kann ich nun diese datei auslesen und in einen char* packen ?
ahja und als 2. möchte ich diesen char * dann später in einer anderen datei wieder abspeichern ...mfg LT
-
-
@theta: Das liest die Datei aber nur in Blöcken.
@LordTerra:
- Ermittel mit CFile::GetStatus die Größe der Datei.
- Lege mit new einen entsprechenden char Array an
- Lieas mit CFile::Read die ganze Datei ein.
-
CFile f; if(f.Open(m_aktivConfig,CFile::modeRead | CFile::typeBinary)) { int flen=f.GetLength(); long int datgr; CFileStatus pStat; CFile::GetStatus(&f, pStat); datgr = pStat.m_size; }^^ das funktioniert so aber irgendwie nicht ...
ich bekomm vom complier immer fehlermeldung:
error C2665: 'GetStatus' : Durch keine der 2 Ueberladungen kann Parameter 1 vom Typ 'class CFile *' konvertiert werden
-
Wahrscheinlich eher so:
f.GetStatus(pStat);
-
öffen und senden (SendBlock ist ne funktion die über nen socket den char* verschickt):
CFile f; if(f.Open(m_aktivConfig,CFile::modeRead | CFile::typeBinary)) { long int datgr; CFileStatus pStat; f.GetStatus(pStat); datgr = pStat.m_size; char *buf2; buf2 = (char *)calloc(datgr, sizeof(char)); f.Read(buf2, datgr); ret=SendBlock(soc,buf2,strlen(buf2)); }ueber den recv wird das gesendete von einem anderen programm emfangen
und soll dann wieder in eine datei geschrieben werden ...char *recvbuffer; recvbuffer = (char *)calloc(len, sizeof(char)); rc=recv(s,recvbuffer,len,0); if(rc==SOCKET_ERROR) { CString str; str.Format("%d",WSAGetLastError()); AfxMessageBox("Fehler: recvfrom, fehler code: "+str); } else { CFile f; char* pFileName=name.GetBuffer(name.GetLength()); CFileException e; if(f.Open(pFileName,CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)) { f.Write(recvbuffer, len); } name.ReleaseBuffer(); }problem: in der erstellten datei steht nur null drin ... eof und stx steht schon drin aber der rest halt net ...
was mach ich falsch ?
mfg LT
-
ok fehler gefunden ...
strlen(buf2) war schuld ...
-
BTW: Es gibt auch noch CFile::GetLength. Habe ich nicht dran gedacht. Das macht das natürlich noch einfacher...