Suppression des fichiers

Signaler
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
-
BunoCS
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
-
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():


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.

16 réponses

Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Hello,
Sur Windows, tu as DeleteFile();
Pour parcourir ton répertoire, FindFirstFile(), FindNextFile() (un exemple dans la source de Joky, Listing File)


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
WIN32_FIND_DATA wfd;
HANDLE hfl = FindFirstFile("*.txt", &wfd);
if(hfl == INVALID_HANDLE_VALUE) return;
do {
DeleteFile(wfd.cFileName);
} while(FindNextFile(hfl, &wfd));
FindClose(hfl);

ATTENTION que ta CurrentDirectory soit sur le bon dossier.
Sinon passer un FullPathName à FindFirstFile();

ciao...
BruNews, MVP VC++
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
Bonsoir,

Je voulais directement supprimer les fichiers textes et non pas un dossier.

Pouvez me donner un exemple d'utilisation de la fonction permettant la suppression l'ensemble des fichiers texte dans les deus cas 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.

Merci.
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
C'est ce que l'on t'a indiqué. BruNews t'a même donné le code pour supprimer les fichiers *.txt


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
WIN32_FIND_DATA wfd;
HANDLE hfl = FindFirstFile("*.txt", &wfd);
if(hfl == INVALID_HANDLE_VALUE) return;
do {
DeleteFile(wfd.cFileName);
} while(FindNextFile(hfl, &wfd));
FindClose(hfl);

ATTENTION que ta CurrentDirectory soit sur le bon dossier.
Sinon passer un FullPathName à FindFirstFile();


Comment je vais appeler dans le programme 'main' ?
est ce que il y a des 'include 'à ajouter ?

Merci.
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Pour les includes, va sur MSDN, tapes "FindFirstFile" dans la zone de recherche et tu devrais trouver ton bonheur. Tu devrais même trouver des exemples


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
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:

#include <windows.h>
#include <stdio.h>
#include <stdlib.h> 
#include <string.h> 

int main()

{

DeleteFile("C:\\cop\\cop\\fichier*.txt",FALSE); 

return 0;

}


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.
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Oui...celle de BruNews...que j'adapte à tes besoins car j'ai du temps

#include <Windows.h>
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
    string strPath="C:\\cop\\cop\";   // ici le répertoire contenant les fichiers à supprimer
    string strSearch=strPath+"*.txt";  // ici, rajout de "l'extension" à supprimer
    WIN32_FIND_DATA wfd;
    HANDLE hfl = FindFirstFile(strSearch.data(), &wfd);
    if(hfl == INVALID_HANDLE_VALUE) return 0;
    do {
        string strFile=strPath+wfd.cFileName;  // reconstruction du chemin complet
        DeleteFile(strFile.data());            // suppression
    } while(FindNextFile(hfl, &wfd));
    FindClose(hfl); 
    return 0;
}


A noter que ce code n'est pas récursif (ne va pas chercher dans les sous-répertoires).

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
Je copie ce code dans mon programme C sous windows.
Je lance la compilation alors j'obtiens des erreurs(32 erreurs et 8warnings):

1>c:\cop\cop\copie.c(7) : error C2061: erreur de syntaxe : identificateur 'namespace'
1>c:\cop\cop\copie.c(7) : error C2059: erreur de syntaxe : ';'
1>c:\cop\cop\copie.c(15) : error C2065: 'string' : identificateur non déclaré
1>c:\cop\cop\copie.c(15) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'strPath'
1>c:\cop\cop\copie.c(15) : error C2065: 'strPath' : identificateur non déclaré
1>c:\cop\cop\copie.c(15) : warning C4047: '=' : 'int' diffère de 'char [12]' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(17) : error C2065: 'string' : identificateur non déclaré
1>c:\cop\cop\copie.c(17) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'strSearch'
1>c:\cop\cop\copie.c(17) : error C2065: 'strSearch' : identificateur non déclaré
1>c:\cop\cop\copie.c(17) : error C2065: 'strPath' : identificateur non déclaré
1>c:\cop\cop\copie.c(17) : warning C4047: '=' : 'int' diffère de 'char *' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(19) : error C2275: 'WIN32_FIND_DATA' : utilisation non conforme de ce type comme expression
1> c:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(6154) : voir la déclaration de 'WIN32_FIND_DATA'
1>c:\cop\cop\copie.c(19) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'wfd'
1>c:\cop\cop\copie.c(19) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(21) : error C2275: 'HANDLE' : utilisation non conforme de ce type comme expression
1> c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(402) : voir la déclaration de 'HANDLE'
1>c:\cop\cop\copie.c(21) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'hfl'
1>c:\cop\cop\copie.c(21) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(21) : error C2065: 'strSearch' : identificateur non déclaré
1>c:\cop\cop\copie.c(21) : error C2224: la partie gauche de '.data' doit avoir un type struct/union
1>c:\cop\cop\copie.c(21) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(21) : warning C4133: 'fonction' : types incompatibles - de 'int *' à 'LPCSTR'
1>c:\cop\cop\copie.c(21) : error C2198: 'FindFirstFileA' : pas assez d'arguments pour un appel
1>c:\cop\cop\copie.c(21) : warning C4047: '=' : 'int' diffère de 'HANDLE' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(23) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(23) : warning C4047: '==' : 'int' diffère de 'HANDLE' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(27) : error C2065: 'string' : identificateur non déclaré
1>c:\cop\cop\copie.c(27) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'strFile'
1>c:\cop\cop\copie.c(27) : error C2065: 'strFile' : identificateur non déclaré
1>c:\cop\cop\copie.c(27) : error C2065: 'strPath' : identificateur non déclaré
1>c:\cop\cop\copie.c(27) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(27) : error C2224: la partie gauche de '.cFileName' doit avoir un type struct/union
1>c:\cop\cop\copie.c(29) : error C2065: 'strFile' : identificateur non déclaré
1>c:\cop\cop\copie.c(29) : error C2224: la partie gauche de '.data' doit avoir un type struct/union
1>c:\cop\cop\copie.c(29) : error C2198: 'DeleteFileA' : pas assez d'arguments pour un appel
1>c:\cop\cop\copie.c(31) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(31) : warning C4022: 'FindNextFileA' : incompatibilité de pointeur pour le paramètre réel 1
1>c:\cop\cop\copie.c(31) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(31) : warning C4133: 'fonction' : types incompatibles - de 'int *' à 'LPWIN32_FIND_DATAA'
1>c:\cop\cop\copie.c(33) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(33) : warning C4022: 'FindClose' : incompatibilité de pointeur pour le paramètre réel 1
1>Le journal de génération a été enregistré à l'emplacement "file://c:\cop\cop\Debug\BuildLog.htm"
1>cop - 32 erreur(s), 8 avertissement(s)


Je crois que j'ai besoin d'une version C de ce code.
Aidez moi et Merci.
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
#include <Windows.h>

int main(int argc, char* argv[])
{
    char szPath[256];
    char szSearch[256];
    strcpy(szPath,"C:\\cop\\cop\");
    strcpy(szSearch,szPath);
    strcat(szSearch,"*.txt");
    WIN32_FIND_DATA wfd;
    HANDLE hfl = FindFirstFile(szSearch, &wfd);
    if(hfl == INVALID_HANDLE_VALUE) return 0;
    do {
        char szFile[256];
        strcpy(szFile,szPath);
        strcat(szFile,wfd.cFileName);
        DeleteFile(szFile);
    } while(FindNextFile(hfl, &wfd));
    FindClose(hfl); 
    return 0;
}



@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
J'ai ajouté à votre code:
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>


Je compile la version C je obtiens les messages des erreurs suivants:

1>------ Début de la génération : Projet : cop, Configuration : Debug Win32 ------
1>Compilation en cours...
1>copie.c
1>c:\cop\cop\copie.c(15) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : voir la déclaration de 'strcpy'
1>c:\cop\cop\copie.c(17) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : voir la déclaration de 'strcpy'
1>c:\cop\cop\copie.c(19) : warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(79) : voir la déclaration de 'strcat'
1>c:\cop\cop\copie.c(21) : error C2275: 'WIN32_FIND_DATA' : utilisation non conforme de ce type comme expression
1> c:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(6154) : voir la déclaration de 'WIN32_FIND_DATA'
1>c:\cop\cop\copie.c(21) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'wfd'
1>c:\cop\cop\copie.c(21) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(23) : error C2275: 'HANDLE' : utilisation non conforme de ce type comme expression
1> c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(402) : voir la déclaration de 'HANDLE'
1>c:\cop\cop\copie.c(23) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'hfl'
1>c:\cop\cop\copie.c(23) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(23) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(23) : warning C4133: 'fonction' : types incompatibles - de 'int *' à 'LPWIN32_FIND_DATAA'
1>c:\cop\cop\copie.c(23) : warning C4047: '=' : 'int' diffère de 'HANDLE' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(25) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(25) : warning C4047: '==' : 'int' diffère de 'HANDLE' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(33) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(33) : error C2224: la partie gauche de '.cFileName' doit avoir un type struct/union
1>c:\cop\cop\copie.c(33) : error C2198: 'strcat' : pas assez d'arguments pour un appel
1>c:\cop\cop\copie.c(37) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(37) : warning C4022: 'FindNextFileA' : incompatibilité de pointeur pour le paramètre réel 1
1>c:\cop\cop\copie.c(37) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(37) : warning C4133: 'fonction' : types incompatibles - de 'int *' à 'LPWIN32_FIND_DATAA'
1>c:\cop\cop\copie.c(39) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(39) : warning C4022: 'FindClose' : incompatibilité de pointeur pour le paramètre réel 1
1>Le journal de génération a été enregistré à l'emplacement "file://c:\cop\cop\Debug\BuildLog.htm"
1>cop - 14 erreur(s), 9 avertissement(s)
======== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========


J'ai compilé votre code c++ précédent avec un compilateur C++ alors j'obtiens les messages d'erreurs suivants :

1>------ Début de la génération : Projet : supr, Configuration : Debug Win32 ------
1>Compilation en cours...
1>main.cpp
1>c:\supr\supr\main.cpp(6) : error C2871: 'std' : un espace de noms avec ce nom n'existe pas
1>c:\supr\supr\main.cpp(14) : error C2065: 'string' : identificateur non déclaré
1>c:\supr\supr\main.cpp(14) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'strPath'
1>c:\supr\supr\main.cpp(14) : error C2065: 'strPath' : identificateur non déclaré
1>c:\supr\supr\main.cpp(16) : error C2065: 'string' : identificateur non déclaré
1>c:\supr\supr\main.cpp(16) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'strSearch'
1>c:\supr\supr\main.cpp(16) : error C2065: 'strSearch' : identificateur non déclaré
1>c:\supr\supr\main.cpp(16) : error C2065: 'strPath' : identificateur non déclaré
1>c:\supr\supr\main.cpp(20) : error C2065: 'strSearch' : identificateur non déclaré
1>c:\supr\supr\main.cpp(20) : error C2228: la partie gauche de '.data' doit avoir un class/struct/union
1> le type est ''unknown-type''
1>c:\supr\supr\main.cpp(26) : error C2065: 'string' : identificateur non déclaré
1>c:\supr\supr\main.cpp(26) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'strFile'
1>c:\supr\supr\main.cpp(26) : error C2065: 'strFile' : identificateur non déclaré
1>c:\supr\supr\main.cpp(26) : error C2065: 'strPath' : identificateur non déclaré
1>c:\supr\supr\main.cpp(28) : error C2065: 'strFile' : identificateur non déclaré
1>c:\supr\supr\main.cpp(28) : error C2228: la partie gauche de '.data' doit avoir un class/struct/union
1> le type est ''unknown-type''
1>Le journal de génération a été enregistré à l'emplacement "file://c:\supr\supr\Debug\BuildLog.htm"
1>supr - 16 erreur(s), 0 avertissement(s)
======== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Voici la page MSDN concernant l'erreur C2275
N'aurais-tu pas rajouter du code? Si tu compiles juste le code que je t'ai donné, ça passe?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
Bonjour,
Je copie votre code C comme un nouveau programme C sous windows avec Visual studio 2008:

#include <Windows.h>



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

{

    char szPath[256];

    char szSearch[256];

    strcpy(szPath,"C:\\cop\\cop\");

    strcpy(szSearch,szPath);

    strcat(szSearch,"*.txt");

    WIN32_FIND_DATA wfd;

    HANDLE hfl = FindFirstFile(szSearch, &wfd);

    if(hfl == INVALID_HANDLE_VALUE) return 0;

    do {

        char szFile[256];

        strcpy(szFile,szPath);

        strcat(szFile,wfd.cFileName);

        DeleteFile(szFile);

    } while(FindNextFile(hfl, &wfd));

    FindClose(hfl); 

    return 0;

}


Après la compilation, j'obtiens 14 erreurs et 9 avertissements :


1>------ Début de la génération : Projet : cop, Configuration : Debug Win32 ------
1>Compilation en cours...
1>copie.c
1>c:\cop\cop\copie.c(59) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : voir la déclaration de 'strcpy'
1>c:\cop\cop\copie.c(61) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : voir la déclaration de 'strcpy'
1>c:\cop\cop\copie.c(63) : warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(79) : voir la déclaration de 'strcat'
1>c:\cop\cop\copie.c(65) : error C2275: 'WIN32_FIND_DATA' : utilisation non conforme de ce type comme expression
1> c:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(6154) : voir la déclaration de 'WIN32_FIND_DATA'
1>c:\cop\cop\copie.c(65) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'wfd'
1>c:\cop\cop\copie.c(65) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(67) : error C2275: 'HANDLE' : utilisation non conforme de ce type comme expression
1> c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(402) : voir la déclaration de 'HANDLE'
1>c:\cop\cop\copie.c(67) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'hfl'
1>c:\cop\cop\copie.c(67) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(67) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(67) : warning C4133: 'fonction' : types incompatibles - de 'int *' à 'LPWIN32_FIND_DATAA'
1>c:\cop\cop\copie.c(67) : warning C4047: '=' : 'int' diffère de 'HANDLE' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(69) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(69) : warning C4047: '==' : 'int' diffère de 'HANDLE' dans les niveaux d'indirection
1>c:\cop\cop\copie.c(77) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(77) : error C2224: la partie gauche de '.cFileName' doit avoir un type struct/union
1>c:\cop\cop\copie.c(77) : error C2198: 'strcat' : pas assez d'arguments pour un appel
1>c:\cop\cop\copie.c(81) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(81) : warning C4022: 'FindNextFileA' : incompatibilité de pointeur pour le paramètre réel 1
1>c:\cop\cop\copie.c(81) : error C2065: 'wfd' : identificateur non déclaré
1>c:\cop\cop\copie.c(81) : warning C4133: 'fonction' : types incompatibles - de 'int *' à 'LPWIN32_FIND_DATAA'
1>c:\cop\cop\copie.c(83) : error C2065: 'hfl' : identificateur non déclaré
1>c:\cop\cop\copie.c(83) : warning C4022: 'FindClose' : incompatibilité de pointeur pour le paramètre réel 1
1>Le journal de génération a été enregistré à l'emplacement "file://c:\cop\cop\Debug\BuildLog.htm"
1>cop - 14 erreur(s), 9 avertissement(s)
======== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========


Comment on résoudre ces erreurs ?
Est que il y a des paramètres à configurer dans le projet de travail ?

Merci.
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
Dans les options du projet, onglet C/C++ > Advanced > Compile As : mettre "Compile as C++ code"


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
Merci beaucoup çà marche.
Il suffit de déclarer les variables en tête de fonction 'main'.
[code=cpp]
#include <stdio.h>
#include <windows.h>

int main()
{

char szPath[MAX_PATH]; char szSearch[MAX_PATH];

char szFile[MAX_PATH]; WIN32_FIND_DATA wfd; HANDLE hfl;


strcpy(szPath,"C:\\cop\\cop\");

strcpy(szSearch,szPath);

strcat(szSearch,"*.txt");


hfl = FindFirstFile(szSearch, &wfd);

if(hfl == INVALID_HANDLE_VALUE) return 0;

do {

strcpy(szFile,szPath);

strcat(szFile,wfd.cFileName);

printf("Deleting %s\n",szFile);

DeleteFile(szFile);

} while(FindNextFile(hfl, &wfd));

FindClose(hfl);

return 0;

}
[code]


Comment adapter cette solution pour supprimer seulement des fichiers textes qui vérifient la condition suivante:
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 .
Comment supprimer ces fichiers qui portent dans leur préfixe le nom 'test' suivi d'un numéro ?

Merci
Messages postés
14742
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 février 2020
91
L'exemple te montre comment supprimer tous les fichiers txt d'un répertoire, à toi de le customiser:
- soit, dans szPath, tu rajoute la racine du nom (pas testé et pas sûr que cela fonctionne):
strcpy(szPath,"C:\\cop\\cop\\test");

- soit, quand tu récupères le nom (juste avant le DeleteFile(), tu regarde si le nom (wfd.cFileName) commence par la racine que tu veux (regardes la fonction strcmp())

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...