¿Cómo logro la expansión de tilde en C?

chdir("~/") no parece funcionar. ¿Espero ver la cuerda y sustituir la tilde con la mano, o hay alguna forma mejor?

POSIX proporciona wordexp(3) para realizar una expansión tipo shell, incluida la expansión tilde.

Puedes usar el ejemplo de wordexp continuación.

 #include  #include  int main(int argc, char* argv[]) { wordexp_t exp_result; wordexp(argv[1], &exp_result, 0); printf("%s\n", exp_result.we_wordv[0]); } 

La tilde en un camino es una cosa específica de shell. Lo que puede hacer para ver si el primer carácter es una tilde y una barra (o un extremo de la tilde), reemplace la tilde con el valor de la variable de entorno HOME (que puede obtener de getenv ).

Si el segundo carácter no es una barra diagonal, lo más probable es que esté en forma de ~user/path . Luego, debe extraer el nombre de usuario y usar, por ejemplo, getpwnam para obtener la entrada de contraseña del usuario, que contiene el directorio principal de ese usuario.