Probleme avec chdir en C

Résolu
Jofroy Messages postés 100 Statut Membre -  
Jofroy Messages postés 100 Statut Membre -
Bonjour ,

J'ai besoin de votre aide s'il vout plait pour la fonction chdir , quand je saisie sur l'entrée standard "directory" déjà créé dans le même repertoire que mon programme , rep me retourne -1 ; par contre quand je fais : int rep=chdir("directory"); ça fonctionne , rep me retourne 0 ; je ne comprends pas .
J'ai vérifié les droits d'accès :

drwxrwxr-x 2 ubuntu ubuntu 4096 mars 17 08:33 directory

Voici mon code :

int main(int argc, char* argv[]){

char buffer[1024];
read(0,buffer,1024);
int rep;

int rep=chdir(buffer);
printf("%d\n",rep);
}

Merci d'avance.

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    Le
    read()
    POSIX se contente de lire le contenu accédé par le descripteur et ne termine pas la chaîne avec '\0'. C'est à toi de le faire, par rapport au nombre de char lus, sinon tu passes à chdir une chaîne non terminée.

    Par exemple :

    #include <stdio.h>
    #include <unistd.h>
    
    int main(int argc, char* argv[]){
    
        char buffer[1024];
        ssize_t n = read(0,buffer,1024);
        if ((n > 0) && (buffer[n-1] == '\n')) {
            buffer[n-1] = '\0';
        } else {
            printf("Erreur de lecture ou buffer trop petit\n");
            return 1;
        }
    
        printf("buffer = %s\n", buffer);
    
        int rep=chdir(buffer);
        printf("%d\n",rep);
        return 0;
    }

    Tu pourrais, au lieu de cela, utiliser scanf ou fgets (en retirant '\n'), puisque de toutes façons tu utilises stdio.h.

    Dal
    0
    1. Jofroy Messages postés 100 Statut Membre 9
       
      Je te remercie beaucoup Dal de m'avoir repondu , ça fonctionne nickel ; c'est une partie de mon TP qui m'a bien bloqué .
      Merci beaucoup encore
      0