La façon portable de le faire est :
#define _POSIX_C_SOURCE 1
#include <limits.h>
Spécification :https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
C'est en linux/limits.h
.
#define PATH_MAX 4096 /* # chars in a path name including nul */
#include <linux/limits.h>
char current_path[PATH_MAX];
PATH_MAX
a quelques défauts comme mentionné dans ce blog (merci paulsm4)
Sachez qu'il n'est toujours pas clair si PATH_MAX
définit une longueur maximale avec ou sans octet nul à la fin. Il peut s'agir de l'un ou de l'autre sur différents systèmes d'exploitation. Si vous ne pouvez pas ou ne voulez pas vérifier de quelle casse il s'agit lors de la compilation, il est plus sûr de forcer la limite artificielle de PATH_MAX - 1
. Mieux vaut prévenir que guérir. (Évidemment, vous devez toujours réserver au moins PATH_MAX
octets de mémoire pour mettre la chaîne en mémoire tampon.)