Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

suppression des fichiers

17 réponses
Avatar
programmation
Bonjour,

Je voulais supprimer totalement =E0 partir de mon programme C sous
windows tous les fichiers textes temporaires dans mon r=E9pertoire de
travail et qui sont cr=E9es pendant l'ex=E9cution du programme .

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

Merci.

10 réponses

1 2
Avatar
programmation
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.
Avatar
Bertrand Lenoir-Welter
> Existe-t- elle une fonction ou une procédure permettant la suppression
totale de ces fichiers texte ?



Enumération avec FindFirstFile() / FindNextFile() / FindClose(),
suppression avec remove(), suppression du répertoire avec rmdir().

C'est ce que j'utilise et ça marche bien, mais il y a sûrement d'autres
moyens.
Avatar
Christian ASTOR
On 18 sep, 06:28, programmation wrote:

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



SHFileOperation()
Avatar
programmation
> Enumération avec FindFirstFile() / FindNextFile() / FindClose(),
suppression avec remove(), suppression du répertoire avec rmdir().



Pouvez vous me donner un exemple d'utilisation de ces fonctions ?

SHFileOperation()



Pouvez vous me donner un exemple de l'utilisation de cette fonction?

Merci.
Avatar
Bertrand Lenoir-Welter
> Pouvez vous me donner un exemple d'utilisation de ces fonctions ?



Dites, vous n'avez pas un texte d'aide sur windows.h ? Pas même un petit
accès à MSDN ? Ou vous avez la flemme ?


Allez, c'est mon jour de bonté :

int DeleteDirTree(char *Dir)
{
int NbDeleted=0;
BOOL More;
char Str[256];
HANDLE FindHandle;
WIN32_FIND_DATA FindData;

if(!Dir[0])
return(0);
strcpy(Str,Dir);
if(Str[strlen(Str)-1]!='')
strcat(Str,"");
strcat(Str,"*.*"); // Wildcard à indiquer ici
FindHandle=FindFirstFile(Str,&FindData);
More=(FindHandle!=INVALID_HANDLE_VALUE);
while(More) {
strcpy(Str,Dir);
if(Str[strlen(Str)-1]!='')
strcat(Str,"");
strcat(Str,FindData.cFileName);
if(FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
if(FindData.cFileName[0]!='.')
{
NbDeleted+ÞleteDirTree(Str);
rmdir(Str);
}
}
else
if(!remove(Str))
NbDeleted++;
More=(FindNextFile(FindHandle,&FindData));
}
FindClose(FindHandle);
strcpy(Str,Dir);
rmdir(Str);
return(NbDeleted);
}

Ca vous permet de supprimer un répertoire complet avec ses
sous-répertoires, et ça retourne le nombre de fichiers supprimés.
Faites-vous une fonction BackSlashEnd() pour ajouter le backslash
éventuellement manquant en fin de chaîne, ce sera plus joli.

Gaffe, ce genre de fonction vous ratiboise vite fait un disque entier.
Evitez de lui passer "C:" en argument...
Avatar
Christian ASTOR
On 18 sep, 21:08, Bertrand Lenoir-Welter <bertrand-dot-2008-at-galaad-
dot-net> wrote:

Dites, vous n'avez pas un texte d'aide sur windows.h ? Pas même un peti t accès à MSDN ? Ou vous avez la flemme ?



C'est vrai qu'il y a quand même un minimum d'efforts à faire : ça
prend 30 secondes pour trouver n exemples dans MSDN...

Mais c'est plus simple avec SHFO (on peut enlever FOF_NOCONFIRMATION
pour plus de sûreté) :
{
TCHAR szFile[MAX_PATH + 1];
lstrcpy(szFile, TEXT("c:toto*.*"));
szFile[lstrlen(szFile) + 1] = TEXT('');
SHFILEOPSTRUCT fos;
ZeroMemory(&fos, sizeof(fos));
fos.hwnd = NULL;
fos.wFunc = FO_DELETE;
fos.pFrom = szFile;
fos.fFlags = FOF_SILENT | FOF_NOCONFIRMATION;
int nReturn = SHFileOperation(&fos);
}
Avatar
Bertrand Lenoir-Welter
> Mais c'est plus simple avec SHFO (on peut enlever FOF_NOCONFIRMATION
pour plus de sûreté)



Ah, je découvre. Ca supprime aussi les répertoires ?
Avatar
programmation
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:copcop

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:copcopfichier*.txt",FALSE);

}


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

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

Avez vous une solution ?

Merci.
Avatar
programmation
Voici le code:
<code type="c">
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{

DeleteFile("C:copcopfichier*.txt");
return ;
</code>
}

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 !!!

Merci.
Avatar
Christian ASTOR
On 19 sep, 12:10, Bertrand Lenoir-Welter <bertrand-dot-2008-at-galaad-
dot-net> wrote:
> Mais c'est plus simple avec SHFO (on peut enlever FOF_NOCONFIRMATION
> pour plus de sûreté)

Ah, je découvre. Ca supprime aussi les répertoires ?



Oui, ça fait aussi la récursion...
1 2