|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
SDL_RWread
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Użyj tej funkcji, aby odczytać dane ze strumienia.
size_t SDL_RWread(struct SDL_RWops* context,
void* ptr,
size_t size,
size_t maxnum)
|
| context | wskaźnik do struktury SDL_RWops. |
| ptr | wskaźnik bufora, do którego zostaną wprowadzone odczytane dane. |
| size | rozmiar w bajtach każdego obiektu do odczytania. |
| maxnum | maksymalna liczba obiektów do odczytania. |
SDL_RWops *rw = SDL_RWFromFile("test.bin","r");
if (rw != NULL)
{
extern Uint8 buf[256];
SDL_RWread(rw, buf, sizeof (buf), 1);
SDL_RWclose(rw);
}
|
char* file_read(const char* filename)
{
SDL_RWops *rw = SDL_RWFromFile(filename, "rb");
if (rw == NULL) return NULL;
Sint64 res_size = SDL_RWsize(rw);
char* res = (char*)malloc(res_size + 1);
Sint64 nb_read_total = 0, nb_read = 1;
char* buf = res;
while (nb_read_total < res_size && nb_read != 0)
{
nb_read = SDL_RWread(rw, buf, 1, (res_size - nb_read_total));
nb_read_total += nb_read;
buf += nb_read;
}
SDL_RWclose(rw);
if (nb_read_total != res_size)
{
free(res);
return NULL;
}
res[nb_read_total] = '\0';
return res;
}
|
SDL_RWread() jest w rzeczywistości makrem, które odpowiednio wywołuje metodę odczytu strumienia SDL_RWops, aby uprościć tę operację w aplikacji.
Uint32 buffer[10]; SDL_RWread(rwop, buffer, sizeof(Uint32), 10); |
To odczyta 40 bajtów danych i umieści je w buforze 'buffer', który został przygotowany do przechowywania 32-bitowych liczb całkowitych. Każda liczba typu Uint32 ma długość 4 bajtów, czyli 32-bitów
Uint32 buffer[10]; SDL_RWread(rwop, buffer, sizeof(Uint64), 10); |
To odczyta 80 bajtów danych i umieści je w buforze 'buffer', który jest zaprojektowany teraz do przechowywania 64-bitowych liczb całkowitych (wartości typu Uint64). Każda liczba Uint64 ma długość 8 bajtów, a my odczytujemy ich 10 (co pokazuje definicja buffer[10] przy jego tworzeniu).
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.