Aktywne Wpisy

PiccoloColo +1
Ile przerw i jak długie przerwy macie w kołchozach?

Gilgamesz69 +205
Co za wydygańcy xD hlip hlip nie można znieść zakazu handlu
#bekazprawakow #bekazkonfederacji #konfederacja #zakazhandlu
#bekazprawakow #bekazkonfederacji #konfederacja #zakazhandlu





do {
char buffer[2000];
InternetReadFile(hData, (LPVOID)buffer, _countof(buffer), &dwBytesRead);
data = (char*)realloc(data, strlen(buffer) * sizeof(char));
memcpy(data, buffer, strlen(buffer));
} while ( (dwBytesRead > 0));
#cpp #programowanie
Realloc powinien przyjmować poprzedni rozmiar tablicy data + rozmiar buffer'a. A memcpy powinien kopiować tablice buffer pod adres data + ile danych już zostało do niego zapisane.
HINTERNET hData;
(...)
const DWORD bufferSize = 2000;
char buffer[bufferSize];
DWORD dataSize = 0;
char *data;
DWORD dwBytesRead;
do {
InternetReadFile(hData, (LPVOID)buffer, bufferSize, &dwBytesRead);
data = (char*)realloc(data, dataSize + dwBytesRead);
memcpy(data + dataSize, buffer, dwBytesRead);
dataSize += dwBytesRead;
} while((dwBytesRead > 0));
(...)
@zido11: Cale dzialanie tej procedury jest dla mnie okropne ( ͡° ʖ̯ ͡°) .
Bierzesz stream(coś ala czytanie z stdin) typu HINTERNET i wczytujesz z niego MAKSYMALNIE bufferSize bajtów pod adres buffer, dodatkowo metoda modyfikuje wartość zmiennej dwBytesRead wpisując tam ile bajtów udało się przeczytać(zauważ, że przekazujesz wskaźnik na ta zmienną, dzięki czemu ta metoda jest w stanie nadpisać jej wartość).
No i teraz jeśli stream jest pusty to przeczytasz