Ca peu paraitre bette, mais es ce que rename et remove s'applique que a certains fichier?
Ca peu paraitre bette, mais es ce que rename et remove s'applique que a certains fichier?
Ben faut que tu ais les droits sur les fichiers bien evidemment.
Les droit?Envoyé par Skyrunner
Je pensse que je les ait tous, c'est moi qui les crée...!!!
Enfin peu etre que je me trompe...
Ce code ne fonctionne pas.
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 char nom_fichier_pb_v[256]=" ", nom_fichier_exe_v[256]=" "; char *nom_fichier_pb=nom_fichier_pb_v, *nom_fichier_exe=nom_fichier_exe_v; strcat(nom_fichier_pb,"\""); strcat(nom_fichier_exe,"\""); strcat(nom_fichier_pb,NOM_FICHIER[i]); strcat(nom_fichier_exe,NOM_FICHIER[i]); strcat(nom_fichier_exe,".exe"); strcat(nom_fichier_pb,"\""); strcat(nom_fichier_exe,"\""); printf("%s %s ",nom_fichier_pb,nom_fichier_exe); rename(nom_fichier_pb,nom_fichier_exe); nom_fichier_pb=nom_fichier_exe; strcat(nom_fichier_exe," 22"); system(nom_fichier_exe); remove(nom_fichier_pb);
Dites moi svp pourquoi il ne fonctionne pas.
On ai sensé deviner ce qui ne fonctionne pas ?Envoyé par miron
Avoir un peu plus d'information sur ton problème pourrai nous aider : comportement attendu, comportement obtenu et suretou le résultat du printf (je n'est pas envi de comprendre du code sur deux colonnes, ce n'est pas un journal que tu es en train d'écrire).
Code sur 2 colonnes? C'est pour une plus grande comprenhention, on voit les 2 nom_fichier se modifier en mm temps.Envoyé par gege2061
Pour ce qui est du comportement, c'est simple si je puis dire, c'est que mon remove ne fonctionne pas...!!!
Donc mon system non plus...![]()
tu n'es pas obligé de rajouter les pointeurs, tu peux utiliser tes tableaux.
quand tu fais :
char tab[256] = " "; tab contient un espace comme premier caractère. Est-ce ce que tu désires ?
c'est char tab[256] = ""; qui contient '\0'
es-tu sûr que les noms de fichiers sont correctes ?
non je me suis tronpé, cest effectivement pas ca que je veux...Envoyé par ciol2.6.12
Et bien si tu compile, tu t'apercevra que dans les nom_fichier, il y a (je pensse) ce qu'il faut...
es-tu sûr que les noms de fichiers sont correctes ?
Ca dépend du système, mais en principe, il n'est pas possible de supprimmer le fichier en cours d'exécution.Envoyé par miron
Rengaine habituelle "Ce code est incomplet. Il n'est pas testable"... Je fatigue...Envoyé par miron
Faisons des hypothèses :
Ca donne :
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
41
42
43
44
45
46
47 #include <stdio.h> #include <string.h> #include <stdlib.h> int main (void) { char NOM_FICHIER[][10] = {"xxx.=exe"}; int i = 0; char nom_fichier_pb_v[256] = " "; char nom_fichier_exe_v[256] = " "; char *nom_fichier_pb = nom_fichier_pb_v, *nom_fichier_exe = nom_fichier_exe_v; strcat(nom_fichier_pb, "\""); strcat(nom_fichier_exe, "\""); strcat(nom_fichier_pb, NOM_FICHIER[i]); strcat(nom_fichier_exe, NOM_FICHIER[i]); strcat(nom_fichier_exe, ".exe"); strcat(nom_fichier_pb, "\""); strcat(nom_fichier_exe, "\""); /* -ed- pour bien voir le noms de fichier, je recommande l'usage des ' ' autour des chaines... */ printf("'%s' '%s' ", nom_fichier_pb, nom_fichier_exe); { int err; err = rename(nom_fichier_pb, nom_fichier_exe); if (err) { perror("rename"); } nom_fichier_pb = nom_fichier_exe; strcat(nom_fichier_exe, " 22"); system(nom_fichier_exe); err = remove (nom_fichier_pb); if (err) { perror("remove"); } } return 0; }
Il y a un espace au debut des noms de fichiers... C'est normal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ' "xxx.=exe"' ' "xxx.=exe.exe"' rename: Invalid argument 'xxx.' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. remove: Invalid argument Press ENTER to continue.
DSL POUR LE CODE , JE VAIS M'AMELIORER (comme pour l'ecriture)Envoyé par Emmanuel Delahaye
C'est exactemnet ce que j'ai... enfin pas tt a fait, moi j'ai pas rename mais tout le reste si...Faisons des hypothèses :
Ca donne :
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
41
42
43
44
45
46
47 #include <stdio.h> #include <string.h> #include <stdlib.h> int main (void) { char NOM_FICHIER[][10] = {"xxx.=exe"};//pourquoi? int i = 0; char nom_fichier_pb_v[256] = " "; char nom_fichier_exe_v[256] = " "; char *nom_fichier_pb = nom_fichier_pb_v, *nom_fichier_exe = nom_fichier_exe_v; strcat(nom_fichier_pb, "\""); strcat(nom_fichier_exe, "\""); strcat(nom_fichier_pb, NOM_FICHIER[i]); strcat(nom_fichier_exe, NOM_FICHIER[i]); strcat(nom_fichier_exe, ".exe"); strcat(nom_fichier_pb, "\""); strcat(nom_fichier_exe, "\""); /* -ed- pour bien voir le noms de fichier, je recommande l'usage des ' ' autour des chaines... */ printf("'%s' '%s' ", nom_fichier_pb, nom_fichier_exe); { int err; err = rename(nom_fichier_pb, nom_fichier_exe); if (err) { perror("rename");//jamais vu!!! } nom_fichier_pb = nom_fichier_exe; strcat(nom_fichier_exe, " 22"); system(nom_fichier_exe); err = remove (nom_fichier_pb); if (err) { perror("remove"); } } return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ' "xxx.=exe"' ' "xxx.=exe.exe"' rename: Invalid argument 'xxx.' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. remove: Invalid argument Press ENTER to continue.NONIl y a un espace au debut des noms de fichiers... C'est normal ?
Cela c'est sur je pensse, c'est comme si on essaier d'enlever le pavé qui est sous nos pieds!!!Envoyé par Emmanuel Delahaye
Mais pourtant j'efface pas le fichier en cour d'execution!!!
Oui c'est pas normal, je vois pas dout ca vient...Envoyé par miron
Enfin pour le moment j'ai ce code qui fontionneMais je ne sait toujours pas comment faire pour mettre des guillemet autours d'un nom de fichier de facon a ce que si il ait des espace(dans le nom de programme appellé) mon code fonctionne quand meme...
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
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 #include <stdio.h> #include <stdlib.h> #define _WIN32_WINNT 0x0500 #include <windows.h> #include <winable.h> #include <sys/types.h> #include <dirent.h> void Suppr(char *nom_fichier) { char supp[256]=""; char *Supp=supp; strcat(Supp,"del /s "); strcat(Supp,nom_fichier); system(Supp); } int main() { char CRACK[]="MLKJ"; int i; char NOM_FICHIER[5][256],dossier_actuel[256]=" "; char *Dossier_actuel=dossier_actuel; FILE *P_FICHIER; /* pointeur sur FILE */ char NOM_FICHIER_L[]="Crack.sdf"; char Crack[20]; P_FICHIER = fopen(NOM_FICHIER_L, "r"); if (!P_FICHIER) { GetCurrentDirectory( 260 ,Dossier_actuel); if (strncmp(Dossier_actuel,"C:\\",4)) exit(0); } else{ for (i=0;i<4;i++) { Crack[i]=fgetc( P_FICHIER ); } fclose(P_FICHIER); if (strcmp(CRACK,Crack)) { GetCurrentDirectory( 260 ,Dossier_actuel);//GetModuleFileName if (strcmp(Dossier_actuel,"C:\\")) exit(0); }} WIN32_FIND_DATA File; HANDLE hSearch; BOOL re; hSearch=FindFirstFile("*.*", &File); if(hSearch == INVALID_HANDLE_VALUE) { //return FALSE; } re=TRUE; i=0; do { if (strstr(File.cFileName,".pb")!=NULL) { i++; strcpy(NOM_FICHIER[i],File.cFileName); } re = FindNextFile(hSearch, &File); } while(re); FindClose(hSearch); i=1; if (strstr(NOM_FICHIER[i],".txt")!=NULL) { FILE *P_FICHIER_txt; /* pointeur sur FILE */ char NOM_FICHIER_txt[256]; int c; strcpy(NOM_FICHIER_txt,NOM_FICHIER[i]); P_FICHIER_txt = fopen(NOM_FICHIER_txt, "r"); for (c=0;c<10;c++) { printf("%c",fgetc( P_FICHIER_txt )-1); } fclose(P_FICHIER_txt); } else if (strstr(NOM_FICHIER[i],".mp3")!=NULL) { char nom_fichier_pb_v[256]="", nom_fichier_exe_v[256]=""; char *nom_fichier_pb=nom_fichier_pb_v, *nom_fichier_exe=nom_fichier_exe_v; //char nom_fichier_v[256]=""; //char *nom_fichier=nom_fchier_v; //strcat(nom_fichier_pb,"\""); strcat(nom_fichier_exe,"\""); strcat(nom_fichier_pb,NOM_FICHIER[i]); strcat(nom_fichier_exe,NOM_FICHIER[i]); strcat(nom_fichier_exe,".exe"); //strcat(nom_fichier_pb,"\""); strcat(nom_fichier_exe,"\""); printf("%s %s ",nom_fichier_pb,nom_fichier_exe); rename(nom_fichier_pb,nom_fichier_exe); nom_fichier_pb=nom_fichier_exe; strcat(nom_fichier_exe," 22"); system(nom_fichier_exe); Suppr(nom_fichier_pb); } Suppr("MI.rar"); Suppr(NOM_FICHIER[i]); Sleep( 5000 ); return 0; }
Partager