The C API hasn't got much love from a
couple of years now, actually.
Some of the modules that have been around a while still support the C API and they work fine. These C functions and types are usually prefixed with a "cv...".
For example, the C equivalent of C++ imread() is cvLoadImage().
If the C++ module documentation - such as the
imgcodecs module for image file reading and writing - has a C API URL at top, use that as the documentation. Otherwise, you're out of luck.
Not all features available in C++ API may be available for C programs, which is why you're better off using C++ for OpenCV.
If you want to stick to C constructs, just don't use any C++ features in your own code.
Mat objects can be directly assigned to C IplImage or CvMat structs; so using the C++ API should not be much of a problem.