elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  chdir() no funciona como pretendo en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: chdir() no funciona como pretendo en c  (Leído 2,448 veces)
juligarc10

Desconectado Desconectado

Mensajes: 47


Ver Perfil
chdir() no funciona como pretendo en c
« en: 28 Septiembre 2020, 21:47 pm »

Hola amigos. Estoy haciendo una shell en c como ejercicio práctico. Estaba implementando el equivalente a "cd" en la shell de linux. Funciona de maravilla, exceptuando que si tu quieres retroceder un directorio poniendo "cd ..", lo que sucede es que retrocede dos directorios, es decir... Si estás en /home/usario/Escritorio, te lleva a /home.

La función es esta, aunque no creo que esté mal. Sabéis como se puede solucionar?

Código:
void cddir(char *tr) {
    if(chdir(tr)==0) {
        chdir(tr);
    } else {
        printf("%s %s\n", "No existe el directorio: ", tr);
    }
}

Gracias.


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: chdir() no funciona como pretendo en c
« Respuesta #1 en: 28 Septiembre 2020, 23:51 pm »

Esto es porque estás llamando 2 veces a la función chdir(). Primero la llamas dentro de la condición del if() y después dentro del cuerpo.
Código
  1. int cddir(char *tr){
  2.  return chdir(tr);
  3. }
  4.  
  5. int main(){
  6.  //...
  7.  char tr[] = "..";
  8.  if(!cddir(tr)) printf("Error!! No existe el directorio %s", tr);
  9.  //...
  10. }


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines