Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Créer des dossiers en langage C



  1. #1
    combieul

    Créer des dossiers en langage C


    ------

    Bonjour,

    Je suis actuellement sous MacOSX et j'ai un leger problème concernant l'ouverture, la création et la navigation des dossier dans un programme en C, j'ai essayer mkdir(const char * path, #mode_t mode); sans comprendre réellement comment il marche. pour l'ouverture des dossier c'est pareil, je ne sais pas comment mettre une adresse absolue dans le programme.
    ça fait maintenant 2 jours et je suis déprimé

    Merci d'avance
    Combieul

    -----
    La victoire est brillante et l'echec est mat (coluche)

  2. Publicité
  3. #2
    invite765732342432
    Invité

    Re : Creer des dossier en langage C

    Quand tu as ce genre de problèmes, n'hésite pas à demander à Google
    tu trouves ce genre de code pour lister le contenu d'un répertoire:
    Code:
    # #include <stdio.h>
    # #include <sys/types.h>
    # #include <dirent.h>
    #
    # int main()
    # {
    #     struct dirent *lecture;
    #     DIR *rep;
    #     rep = opendir("." );
    #     while ((lecture = readdir(rep))) {
    #         printf("%s\n", lecture->d_name);
    #     }
    #     closedir(rep);
    ou ce genre de doc pour mkdir:
    http://pwet.fr/man/linux/appels_systemes/mkdir

    Si tu as besoin d'explications, n'hésite pas à préciser...

  4. #3
    combieul

    Re : Creer des dossier en langage C

    Merci Faith,

    Je saisi pas bien le concept mais sa marche, donc quand je lance le programme, je vais directement dans le dossier que je veux
    J'ai essayé
    char nom[30]="CW/combieul";
    et j'ai posé rep = opendir(nom); donc la je me situe dans combieul est-ce exact? Comment maintenant créer un dossier dans combieul??
    La victoire est brillante et l'echec est mat (coluche)

  5. #4
    invite765732342432
    Invité

    Re : Creer des dossier en langage C

    Citation Envoyé par combieul Voir le message
    char nom[30]="CW/combieul";
    Alors, il y a un problème ici:
    lorsque tu donnes un chemin, il vaut mieux soit le donner en relatif, et il vaut mieux le faire commencer par "./" ex: "./CW/combieul/"
    Ou alors le donner en chemin absolu (sous windows: C:\\toto\\...\\CW/combieul/" sous unix: /home/toto/.../CW/combieul/)

    et j'ai posé rep = opendir(nom); donc la je me situe dans combieul est-ce exact?
    Non.
    opendir ne fait qu'ouvrir le répertoire (pour en lister le contenu), il ne te déplace pas dans ce répertoire. Il est possible de se déplacer réellement, mais c'est assez risqué (on finit par ne plus savoir où on est)

    Comment maintenant créer un dossier dans combieul??
    mkdir("./CW/combieul/newdirname/", droits);

    Il faut bien sur t'assurer que tous les niveaux de répertoires précédents existent.

    Es-tu sous Unix/Linux ou windows ? As-tu réellement besoin du C ou peux-tu prendre un autre langage ?

  6. A voir en vidéo sur Futura
  7. #5
    combieul

    Re : Creer des dossier en langage C

    Je suis sous mac, et quand j'ai rentrer mon chemin, il avait pas l'air de bouder et il a effectuer correctement la commande.
    donc pour mac c'est Users/.../CW/...
    As-tu réellement besoin du C ou peux-tu prendre un autre langage
    c'est sentimental chez moi
    mkdir("./CW/combieul/newdirname/", droits);
    J'ai un souci, mkdir se déclare implicitement dans mon prog: "mkdir implicit declaration of function". Que dois-je faire??
    La victoire est brillante et l'echec est mat (coluche)

  8. #6
    invite765732342432
    Invité

    Re : Creer des dossier en langage C

    Citation Envoyé par combieul Voir le message
    Je suis sous mac, et quand j'ai rentrer mon chemin, il avait pas l'air de bouder et il a effectuer correctement la commande.
    Ca ne m'étonne pas, mais il vaut mieux mettre ton chemin en relatif, explicitement (avec le "./")

    J'ai un souci, mkdir se déclare implicitement dans mon prog: "mkdir implicit declaration of function". Que dois-je faire??
    As-tu fait les include proposés dans le lien ?
    #include <sys/types.h>
    #include <sys/stat.h>

  9. Publicité
  10. #7
    combieul

    Re : Creer des dossiers en langage C

    Même avec les bibliothèques j'ai toujours un truc qui va pas, pour les droits c'est bien des cas comme "r", "w", "a",etc... ou il y en a d'autre spécifique dans ce cas?

    Il est possible de se déplacer réellement
    .
    Comment maintenant me déplacer dans un dossier créer un sous dossier et y placer des fichier dedans??
    La victoire est brillante et l'echec est mat (coluche)

  11. #8
    invite765732342432
    Invité

    Re : Creer des dossiers en langage C

    Citation Envoyé par combieul Voir le message
    Même avec les bibliothèques j'ai toujours un truc qui va pas, pour les droits c'est bien des cas comme "r", "w", "a",etc... ou il y en a d'autre spécifique dans ce cas?
    Euh... ça n'a rien à voir... Ce dont tu parles, c'est le mode d'ouverture d'un fichier (Read, Write, Append), ici, ce sont les droits d'utilisation (0775 est un exemple classique, n'oublie pas le 0, pour indiquer que c'est de l'octal)

    Comment maintenant me déplacer dans un dossier créer un sous dossier et y placer des fichier dedans??
    Ne le fais pas. Si tu veux créer un fichier dans un répertoire, lorsque tu fais le fopen, tu mets tout le chemin (ex: fopen("./CW/combieul/monfichier.txt", "r") )

  12. #9
    combieul

    Re : Creer des dossiers en langage C

    Merci faith sa marche impécable...

    Une petite question pour la route, si j'ai envie que mon dossier prenne le nom d'une variable dans mon programme.
    Ex:
    char name[]="moi";
    mkdir("CW/combieul/...", 0775); où ...=name[].

    comment dois-procéder??
    La victoire est brillante et l'echec est mat (coluche)

  13. #10
    invite765732342432
    Invité

    Re : Creer des dossiers en langage C

    Citation Envoyé par combieul Voir le message
    Une petite question pour la route, si j'ai envie que mon dossier prenne le nom d'une variable dans mon programme.
    Ex:
    char name[]="moi";
    mkdir("CW/combieul/...", 0775); où ...=name[].

    comment dois-procéder??
    Il faut que tu crées une chaine contenant tout le chemin (un tableau de char suffisamment grand, ou un pointeur, si tu connais)
    Ensuite, il faut concaténer dans ce tableau/pointeur la liste de répertoires et le name.
    Plusieurs solutions: strcat, sprintf, ...
    sprintf est le plus pratique, si tu connais un peu sa syntaxe.

  14. #11
    combieul

    Thumbs up Re : Creer des dossiers en langage C

    Encore un grand merci Faith!!!

    Tout marche impécable, c'est génial!!!



    A bientôt...
    Combieul
    La victoire est brillante et l'echec est mat (coluche)

  15. #12
    Nick21

    Re : Creer des dossiers en langage C

    salut, je vois pas trop bien comment est-ce que vous êtes arrivé a le créer

  16. Publicité
  17. #13
    pm42

    Re : Creer des dossiers en langage C

    Citation Envoyé par Nick21 Voir le message
    salut, je vois pas trop bien comment est-ce que vous êtes arrivé a le créer
    Il a eu 11 ans pour le faire, âge du dernier message de ce fil et cela permet de bien maitriser la fonction mkdir.

  18. #14
    Nick21

    Re : Creer des dossiers en langage C

    c'est-a-dire toute la notion se trouve dans la maîtrise du fonction mkdir ?

  19. #15
    pm42

    Re : Creer des dossiers en langage C

    Citation Envoyé par Nick21 Voir le message
    c'est-a-dire toute la notion se trouve dans la maîtrise du fonction mkdir ?
    Dans le cadre de ce fil, ça et 2 ou 3 autres concepts de base, oui.

    On appelle mkdir en lui passant le chemin du répertoire, relatif ou absolu, et les permissions, en général 0755 comme dit plus haut et ça marche.

Discussions similaires

  1. Langage c créer 2 fils
    Par Imene ati dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 03/05/2017, 10h09
  2. Langage pour créer un système d'exploitation
    Par Helios2A dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 10/09/2014, 03h11
  3. creer un langage, universel simpliste
    Par RoumainTT dans le forum Discussions scientifiques
    Réponses: 36
    Dernier message: 02/11/2013, 14h38
  4. Langage c créer 10 fils fork
    Par SEIYA00 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 02/07/2013, 16h32
  5. compte GMail : peut on créer nouveaux dossiers ?
    Par Cornemuse dans le forum Internet - Réseau - Sécurité générale
    Réponses: 15
    Dernier message: 02/12/2012, 08h26