C++ ya tiene forma estándar de hacerlo, pero en C necesitas funciones específicas del sistema operativo (o usar bibliotecas multiplataforma, pero para algo tan simple sería absurdo):
// En Windows
#include <windows.h>
...
SetCurrentDirectory("ruta");
// Linux
#include <unistd.h>
...
chdir("ruta");