Si vous parcourez le répertoire courant quand le programme démarre pour la première fois, alors vous avez effectivement le répertoire de votre programme a été commencé à partir. De stocker la valeur dans une variable et à vous y référer plus tard dans votre programme. Elle est distincte de l'annuaire qui détient l'actuel fichier programme exécutable. Il n'est pas nécessairement le même répertoire; si quelqu'un exécute le programme à partir d'une invite de commandes, puis le programme est exécuté à partir de l'invite de commande du répertoire de travail en cours, même si le fichier de programme de vie ailleurs.
getcwd est une fonction POSIX et pris en charge hors de la boîte, tous conformes à POSIX plates-formes. Vous n'auriez pas à faire quelque chose de spécial (à part incliding la droite des en-têtes de unistd.h sur Unix et direct.h sur windows).
Puisque vous êtes la création d'un programme C, il fera le lien avec la valeur par défaut c des bibliothèques d'exécution qui est lié à TOUS les processus du système (spécialement conçu exceptions éviter), et comprend cette fonction par défaut. Le CRT n'est jamais considéré comme une bibliothèque externe parce que fournit la base conforme à la norme d'interface de l'OS.
Sur windows getcwd fonction a été dépréciée en faveur de _getcwd. Je pense que vous pourriez l'utiliser dans ce mode.
#include <stdio.h> /* defines FILENAME_MAX */
#ifdef WINDOWS
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
char cCurrentPath[FILENAME_MAX];
if (!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
{
return errno;
}
cCurrentPath[sizeof(cCurrentPath) - 1] = '\0'; /* not really required */
printf ("The current working directory is %s", cCurrentPath);