IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

prog de nettoyage de serveur


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Par défaut prog de nettoyage de serveur
    Bonjour a tous.
    Voila j'essaye de creer un programme qui servira a nettoyer un serveur de fichier de toute les cochonneries que peuvent y mettre mes utilisateurs. Mais voila j'ai un probleme au niveau de la condition de mon "if" que je n'arrive pas à résoudre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <stdio.h>
    #include <stdlib.h>
    #include <dirent.h>
    #include <string.h>
     
    main()
    {
       int i=0;
       char exe[]=".exe",avi[]=".avi",png[]=".png",bmp[]=".bmp",mp3[]=".mp3";
       char dll[]=".dll",wav[]=".wav",wma[]=".wma",jpg[]=".jpg",gif[]=".gif";
       char tif[]=".tif",asx[]=".asx";
     
       char *ext;
       char tt;
     
       struct dirent *lecture;
       DIR *rep;
       rep = opendir("E:\\");
       while ((lecture = readdir(rep)))
       {     
     
     
             ext=strrchr(lecture->d_name, '.');
             tt=*ext;
             if ((strcmp(tt,exe)==0)||(strcmp(tt,avi)==0)||(strcmp(tt,png)==0)||(strcmp(tt,bmp)==0)||(strcmp(tt,mp3)==0)||
    (strcmp(tt,dll)==0)||(strcmp(tt,wav)==0)||(strcmp(tt,wma)==0)||(strcmp(tt,jpg)==0)||(strcmp(tt,gif)==0)||
    (strcmp(tt,tif)==0)||(strcmp(tt,asx)==0))
                {     
                      remove(lecture->d_name);
                      i++;
                }
     
       }
       closedir(rep);
     
       printf("Il y a eu %d fichiers supprimer",i);
     
       system ("pause");
       return 0;
    }

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tt = ext+1; // au lieu de *ext
    Rappel: Vérifier que ext n'est pas NULL.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Par défaut
    Merci, maintenant le programme se compile bien.
    J'ai vérifier la valeur de ext et elle prend la valeur NULL que lorsque je rencontre un dossier ce qui fait d'ailleurs planter le programme lors de son éxécution ce qui est tres embétant ...

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Y'a un truc que je comprends pas tt est un char.

    Ensuite tu essai de comparer ton char avec les différentes extensions.

    Pourquoi ne pas tout simplement faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ext=strrchr(lecture->d_name, '.');
    if((strcmp(tt,exe)==0) || ..)
    [...]
    Meme encore mieux pourquoi tu ne fais pas un tableau contenant toutes les extensions. Et tu compares via une boucle au lieu de faire un big if.

  5. #5
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par wabit
    Merci, maintenant le programme se compile bien.
    J'ai vérifier la valeur de ext et elle prend la valeur NULL que lorsque je rencontre un dossier ce qui fait d'ailleurs planter le programme lors de son éxécution ce qui est tres embétant ...
    Quand on dit vérifier, on est bien d'accord que tu as fait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ext=strrchr(lecture->d_name, '.');
    if(ext!=NULL)
      { 
      tt=*ext;
      }
    Mais de toute façon le code est faux parce qu'après tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ((strcmp(tt,exe)==0)||(strcmp(tt,avi)==0)||(strcmp(tt,png)==0)||
    (strcmp(tt,bmp)==0)||(strcmp(tt,mp3)==0)||(strcmp(tt,dll)==0)||
    (strcmp(tt,wav)==0)||(strcmp(tt,wma)==0)||(strcmp(tt,jpg)==0)||
    (strcmp(tt,gif)==0)||(strcmp(tt,tif)==0)||(strcmp(tt,asx)==0))
                {     
                      remove(lecture->d_name);
                      i++;
                }
    Or il y a un problème de typage. strcmp prend deux pointeurs...

    Le code correct serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ext=strrchr(lecture->d_name, '.');
    if(ext!=NULL)
      { 
             if ((strcmp(ext,exe)==0)||(strcmp(ext,avi)==0)||(strcmp(ext,png)==0)||
    (strcmp(ext,bmp)==0)||(strcmp(ext,mp3)==0)||(strcmp(ext,dll)==0)||
    (strcmp(ext,wav)==0)||(strcmp(ext,wma)==0)||(strcmp(ext,jpg)==0)||
    (strcmp(ext,gif)==0)||(strcmp(ext,tif)==0)||(strcmp(ext,asx)==0))
                {     
                      remove(lecture->d_name);
                      i++;
                }
    }
    Jc

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Par défaut
    Merci les gars maintenant le code fonctionne nikel !!
    Vous êtes trop fort

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Framework Play HTTP serveur et Prog asynchrone
    Par anthony1987 dans le forum Play!
    Réponses: 0
    Dernier message: 05/04/2012, 15h45
  2. prog. OK en local mais pas sur serveur
    Par kristen44 dans le forum Langage
    Réponses: 6
    Dernier message: 06/02/2011, 15h01
  3. Communication entre serveur web et prog VB
    Par christgh dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/04/2008, 13h36
  4. Execution d'1 prog sur le serveur ?
    Par mosquitout dans le forum Serveurs (Apache, IIS,...)
    Réponses: 6
    Dernier message: 03/12/2006, 01h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo