I'll report back on this later next week. In the distant past I have written programs in C and run them on an Arduino, including reading and writing to disk files. I never tried a SD card back then, but I'm sure I can handle it the same way.
Uploading and running C programs on an Arduino is a different ball game than going the Arduino IDE route. Using the Arduino IDE to access a SD card on a shield requires the use of one of their special libraries. It is nothing like working with file I/O in C.
Doing this directly in C has certain advantages, but the big disadvantage is not being able to use the hundreds of Arduino libraries that are available. With a lot of work, the libraries could probably be modified to work directly in C, but that kind of defeats their purpose.