Der Inhalt eines Streams in einer Variable speichern
-
Guten Abend zusammen.
Der Inhalt des index.txt wird schön in die Datei test.txt geschrieben.
Gleichzeitig möchte ich diesen Inhalt in einer Variable (buffer) speichern für eine spätere weitere Verwendung.
Irgendwas scheint nicht zu funktionieren, denn die MessageBox zeigt mir nur komische Zeichen an.Grüsse und herzlichen Dank,
SotaresHINTERNET Initialize,Connection,File; DWORD dwBytes; char ch; FILE* fFile; char buffer; /*initialize the wininet library*/ Initialize = InternetOpen("HTTPGET",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0); /*connect to the server*/ Connection = InternetConnect(Initialize,"localhost",INTERNET_DEFAULT_HTTP_PORT, NULL,NULL,INTERNET_SERVICE_HTTP,0,0); /*open up an HTTP request*/ File = HttpOpenRequest(Connection,NULL,"/notewriter/index.txt",NULL,NULL,NULL,0,0); if(HttpSendRequest(File,NULL,0,NULL,0)) { fFile = fopen("c:\\test.txt", "w+b"); while(InternetReadFile(File,&ch,1,&dwBytes)) { if(dwBytes != 1)break; putchar(ch); buffer += ch; fwrite(&ch, 1, dwBytes, fFile); } fclose(fFile); } /*close file , terminate server connection and deinitialize the wininet library*/ InternetCloseHandle(File); InternetCloseHandle(Connection); InternetCloseHandle(Initialize); MessageBox(NULL, &buffer, "",0);
-
Hmm, besteht dein Buffer nur aus einem char ?
-
geeky schrieb:
Hmm, besteht dein Buffer nur aus einem char ?
Nein, dies war ein Fehler.
Ich habe nun die Lösung gefunden.
Sotares
static char buffer[]={0}; int iLenght=0; ... ... while(InternetReadFile(File,&ch,1,&dwBytes)) { if(dwBytes != 1)break; putchar(ch); buffer[iLenght++] = ch; fwrite(&ch, 1, dwBytes, fFile); } fclose(fFile); ... ...
-
InternetReadFile mit einer Puffergröße von 1 ist ganz schön ineffizient.
-
Besser: so ziemlich jede "read" oder "write" Funktion mit einer Puffergrösse von einem Byte ist ziemlich ineffizient.