Bonjour,

je suis entrain de concevoir des logiciels mais j'ai un petit problème.

Disons qu'après exécution je dois effacer mon *.exe, je le fais et j'ai "Erreur lors de la suppression du fichier..." le message windows pour dire que je peut pas l'effacer.

C'est assez embêtant.

Comment faire pour qu'il l'effacer directement, voilà mon code source:

Code c : 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
/*structure pour pouvoir retourner 2 variables*/
typedef struct _pxy{
       int x;
       int y;
       } pxy;
 
/* entrer ici la grille a resoudre (0 = case vide)
 (ou completer le programme avec une interface graphique :D)
ci-join un exemple de grille "dur" a resoudre par le programme
(merci a Stumpy pour la grille)
 
note : le fait d'utiliser 3 tables prend plus de memoire
et necessite legerement plus de temps d'ecriture, par contre
les tests de validité d'une valeur doivent etres plus simples.
 
*/
 
 
/* table representant les collones de la grille*/
int col[9][9]=
{
{0,0,0 ,0,0,0 ,0,0,0},
{0,0,0 ,0,0,3 ,0,8,5},
{0,0,1 ,0,2,0 ,0,0,0},
 
{0,0,0 ,5,0,7 ,0,0,0},
{0,0,4 ,0,0,0 ,1,0,0},
{0,9,0 ,0,0,0 ,0,0,0},
 
{5,0,0 ,0,0,0 ,0,7,3},
{0,0,2 ,0,1,0 ,0,0,0},
{0,0,0 ,0,4,0 ,0,0,9},
};
 
/*transposé de col */
int ligne[9][9];
 
/*valeures en coordonées de groupe*/
int part[9][9];
 
 
 
 
/*---------------------fonctions de calculs anexes------------------*/
 
/*genere x et y a partire de la position pos*/
pxy genxy(int pos)
{
  pxy p;
  p.x = pos%9;
  p.y = (pos-p.x)/9;
  return p;
}
 
/*genere les coordonées de groupe a partir de x et y*/
pxy genpxy(int x, int y)
{
  pxy p;
  p.y = x%3+3*(y%3) ;
  p.x = (x-x%3)/3+(y-y%3);
  return p;
}
 
/*initialisation de col et part*/
void init(void)
{
  int x,y;
  pxy p;
  for (x=0;x<9;x++)
       for (y=0;y<9;y++){
            ligne[y][x]= col[x][y];
            p=genpxy(x,y);
            part[p.x][p.y]=col[x][y];
            }
}
 
/*si la position est valide en ligne, en colonne et en groupe retourne 1. sinon 0*/
int valide(int val, int x, int y, pxy p)
{
  int i;
  for (i=0;i<9;i++)
      if (ligne[y][i] == val)
         return 0;
  for (i=0;i<9;i++)
      if (col[x][i] == val)
         return 0;
  for (i=0;i<9;i++)
      if (part[p.x][i] == val) /*on reste sur le bloc et on regarde les cases*/
         return 0;
  return 1;
}
 
/*ajout d'un nombre validé*/
void add(int val,int x, int y,pxy p)
{
  ligne[y][x] = val;
  col[x][y] = val;
  part[p.x][p.y] = val;
}
 
/*retrait d'un nombre incorect (ne fait rien si la case est vide)*/
void del(int x, int y,pxy p)
{
  ligne[y][x] = 0;
  col[x][y] = 0;
  part[p.x][p.y] = 0;
}
 
 
 
/*--------------la fameuse fonction recurcive!----------*/
 
int calcul(int position)
{
  int i;
  pxy c,p;
 
  /*on genere les coordonnées de travail*/
  c=genxy(position);
  p=genpxy(c.x,c.y);
 
  /*si on sort de la grille->fini*/
  if (position == 81)
     return 1;
 
  /*si la case est deja pleine->suivante*/
  if (col[c.x][c.y] != 0)
     return calcul(position+1);
 
  /*les chiffres valides vont de 1 a 9*/
  for (i=1;i<10;i++)
      {
	  /*si le chiffre rentre on le met...*/
      if (valide(i,c.x,c.y,p)==1)
         {
         add(i,c.x,c.y,p);
		 /*... et si la grille s'est bien completé, on averti la fonction appelante que c'est ok*/
         if (calcul(position+1)==1)
            return 1;
         }
      }
  /*si aucune valeur ne convien on retire la valeur qui ne marche pas...*/
  del(c.x,c.y,p);
  /*et on signal que la grille est bloqué*/
  return 0;
}
 
 
 
/*---------------------------fonction d'affichage---------------------------*/
 
void affiche(void)
{
  int x,y;
  pxy p;
  for (x=0;x<9;x++)
      {
      if (x%3==0)printf(" --- --- ---\n");
         for (y=0;y<9;y++)
             {
             if(y%3==0)printf(" ");
             if(col[x][y] != 0)printf("%d",col[x][y]);
             else printf(".");
             }
       printf("\n");
       }
  printf("\n");
}
 
 
 
/*---------------------------main---------------------------*/
int main()
{
  /*on prepare toutes les grilles*/
  init();
  /*on affiche la grille initiale*/
  affiche();
 
 
  /*on lance la calcul*/
  calcul(0);
  /*on affiche la grille resolue (si la grille n'a pas de solution il faudra s'armer de patience ;)*/
  affiche();
 
 
 
  /* cette ligne est utile si vous etes sous windows et que vous n'utilisez pas la console*/
  system("PAUSE");
  return 0;
}

C'est celui dans les sources C, le solveur de sudoku.

donc si vous voyez pourquoi, merci