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

  1. #1
    Débutant
    Inscrit en
    mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut suppression des fichiers du disque dur
    Bonjour,

    Je voulais supprimer totalement à partir de mon programme C sous windows tous les fichiers textes temporaires dans mon répertoire de travail et qui sont crées pendant l'exécution du programme .

    Existe-t- elle une fonction ou une procédure permettant la suppression totale de ces fichiers texte ?

    Je trouve la fonction remove():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    remove("test.txt");

    Comment je vais utiliser dans les deux suivants ?
    1) si je ne connais pas le nom de fichiers seulement l'extension par exemple *.txt

    2) si je connais le nom et l'extension mais pas le nombre de fichier par exemple:
    test1.txt
    test2.txt
    ......
    ....
    testn.txt

    ici je ne connais pas en avance le nombre car ces fichiers sont générés par le programme seulement.

    il y a autre fonction à part remove() ?


    Merci.

  2. #2
    Modérateur
    Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    janvier 2009
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : janvier 2009
    Messages : 773
    Points : 1 438
    Points
    1 438
    Par défaut
    Sauf particularités Windows, il n'y a pas de fonction standard qui accepte de caractère "joker" pour effacer des fichiers (ou autre chose d'ailleurs) : tu dois fournir les noms/paths in extenso. Donc, dans les deux cas, commencer par boucler sur la liste des fichiers de ton répertoire courant et, pour les fichiers dont le nom correspond à ce que tu cherches, appeler remove
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    mai 2007
    Messages
    11 519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2007
    Messages : 11 519
    Points : 50 350
    Points
    50 350
    Par défaut
    les wildcard (* et ?) sont transformés par le shell dans lequel il sont exécutés (sous Windows et Unix). C'est le shell qui gère ces caractères et fait les remplacements.

    Regarde du côte de la fonction opendir() et ses petites soeurs
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Débutant
    Inscrit en
    mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    les wildcard (* et ?) sont transformés par le shell dans lequel il sont exécutés (sous Windows et Unix). C'est le shell qui gère ces caractères et fait les remplacements.
    Pouvez me donner un exemple ?

    Merci.

  5. #5
    Modérateur
    Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    janvier 2009
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : janvier 2009
    Messages : 773
    Points : 1 438
    Points
    1 438
    Par défaut
    Compile ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
     
    int main (int argc, char *argv[])
    {
        int i;
     
        for (i=0;i<argc;i++)
            printf("arg %d : %s\n", i, argv[i]);
    }
    et regarde ce que cela donne en le lançant avec, en argument, "*.*" sous Windows ou "*" sous Unix/Linux.

    Tu ne récupéres pas le "*.*" (ou le "*") mais les fichiers du répertoire courant
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  6. #6
    Débutant
    Inscrit en
    mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    J'ai besoin de vos aides.

    Je n'arrive pas à bien utiliser les fonctions 'FindFirstFile' et 'DeleteFile'.

    Les fichiers textes sont dans le répertoire:
    c:\cop\cop

    Je voulais supprimer ces fichiers textes

    Voici mon essai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h> 
    #include <string.h> 
     
    int main()
     
    {
     
    DeleteFile("C:\\cop\\cop\\fichier*.txt",FALSE); 
     
    }

    Après la compilation, j'ai un warning :

    1>c:\cop\cop\copie.c(10) : warning C4020: 'DeleteFileA' : paramètres réels trop nombreux


    Avez vous une solution ?

    Merci.

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    mai 2007
    Messages
    11 519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2007
    Messages : 11 519
    Points : 50 350
    Points
    50 350
    Par défaut
    Si tu lis avec attention le message d'erreur du compilateur et si tu regardes la documentation de la fonction DeleteFile(), tu voies bien qu'il y a un paramètre de trop dans ton appel, ton 2eme paramètre (FALSE) est interdit.

    De plus, DeleteFile("C:\\cop\\cop\\fichier*.txt") ne fonctionnera pas car la fonction DeleteFile() ne va pas savoir gérer le caractère '*'.

    Il faut obligatoirement utiliser les fonctions 'FindFirstFile' et ses soeurs pour gérer les caractères * et ?

    voir la ici : http://c.developpez.com/faq/index.ph...HIERS_dir_list
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Débutant
    Inscrit en
    mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h> 
    #include <string.h> 
     
    int main()
    {
     
    	DeleteFile("C:\\cop\\cop\\fichier*.txt"); 
    return ;
    }
    Mais,cette fonction DeleteFile ne supprime rien


    il y a la fonction 'FindFirstFile' mais je n'arrive pas à bien utiliser.

    Pouvez me donner un exemple de cette fonction ?

    S'il vous plait, Aidez moi !!!

Discussions similaires

  1. Rechercher des fichiers sur disque dur
    Par pierrot132 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/11/2007, 12h08
  2. Corriger des erreurs de disque dur
    Par garfieldcut dans le forum Administration système
    Réponses: 3
    Dernier message: 29/05/2006, 11h28
  3. [système]suppression des fichiers
    Par gilleski2010 dans le forum Sécurité
    Réponses: 2
    Dernier message: 05/02/2006, 15h02
  4. Recuperer tous les fichiers du disque dur
    Par godik dans le forum IO
    Réponses: 4
    Dernier message: 04/10/2005, 21h18
  5. copier un fichier du disque dur dans la ram
    Par orichimaru dans le forum C++
    Réponses: 9
    Dernier message: 29/11/2004, 18h45

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