Probleme avec chdir en C
Résolu
Jofroy
Messages postés
82
Date d'inscription
Statut
Membre
Dernière intervention
-
Jofroy Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
Jofroy Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Alias break cd chdir
- Cd burner - Télécharger - Gravure
- Hiren's boot cd - Télécharger - Divers Utilitaires
- Clone cd - Télécharger - Gravure
- Hiren's BootCD - Télécharger - Divers Utilitaires
- Jaquette cd gratuite à télécharger - Télécharger - Catalogage
1 réponse
Salut,
Le
Par exemple :
Tu pourrais, au lieu de cela, utiliser scanf ou fgets (en retirant '\n'), puisque de toutes façons tu utilises stdio.h.
Dal
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
Merci beaucoup encore