What you are looking for is what is known as a "pack/package file" or "assets pack", these are just some of the common names. Most medium to large size games adopt this pattern of packing all loose game assets, such as textures and sounds, into a single file. This is done for three main reasons:
1) To save disk space by compressing the package file;
2) To make difficult for hackers to change game content;
3) To speed up loading and copying of files, since a single large file reduces seek time in the media and data fragmentation in the local File System.
A package file is usually a custom file format devised by the game developer, but most of them mimic a simple directory structure of an OS or implement a virtual File System. Some pack files are just ZIP files that you can open with any ZIP file explorer. Many games actually use plain ZIP files.
If security concerns are really high, you could also go to the extreme of encrypting the assets inside the package file. But this would not be very feasible for a game, since it would slow asset loading to a crawl.
Now regarding the SDL integration, if you had your game assets stored inside one ZIP file, for example, then you would open the ZIP and decompress the data in-memory, possibly using a library like miniZ, and then pass the raw decompressed bytes to one of the equivalent memory loading functions of SDL, like IMG_Load_RW()
.