For sorting arrays in C, you can use qsort, see 'man 3 qsort'.
If you need abstract streaming types, investigate
libSDL, it has neat things they call SDL_RWops. They're structures full of function pointers that can be populated by any functions you want. SDL comes with ones for reading from files and memory, and I've written an extension library,
SDL_rwlib, that includes things like TCP/IP sockets, UNIX fd's, gz streams, bzip2 streams, temp files and temp memory spaces, ring buffers, and an SDL_rwprintf.
What else do you need? If you're looking for a
total replacement of C++ STL, you're out of luck, since the closest thing C has to templates is macros...