I can't answer for Win32, but for POSIX systems, there's generally no difference between a system call and the corresponding C function provided (as in the open system call vs POSIX open()). The POSIX functions are just wrappers around a system call. As such, a C library's fopen() will just call its own open() wrapper instead of directly making a system call, but in the end there's no real difference.