Salut !
J ai un ptit problème avec le remove... il n efface pas mon fichier !
Une idée ?Code:
1
2
3
4
5 STRING finput1 = "exe.txt"; input1.open(finput1()); ... input1.close(); remove("exe.txt");
Merci !
Version imprimable
Salut !
J ai un ptit problème avec le remove... il n efface pas mon fichier !
Une idée ?Code:
1
2
3
4
5 STRING finput1 = "exe.txt"; input1.open(finput1()); ... input1.close(); remove("exe.txt");
Merci !
Commencer par tester la valeur de retour du remove pour voir s'il a correctement été exécuté.
Voir à quoi correspond le code d'erreur, si ce n'est pas le cas.
Oui, j ai fait ca, ca retourne -1, dc le remove a pas marché, mais le problème c est que je n arrive pas a savoir pourquoi ...
Je ne sais pas sous quel OS tu développes. Mais quand je parle de code d'erreur, ce n'est pas de la valeur de retour dont je parle, mais de la valeur de errno.
Et la lecture fonctionne ?
j'ai comme un doute sur cette ligne.Code:input1.open(finput1());
Tu travailles avec quoi ? Il est où ton fichier ?
oui oui, la lecture fonctionne, j travaille sur un logiciel ou plein de trucs on ete reprogrammés, dc c est pas la le probleme.
Mon fichier est bien créé, j ecris dedans puis j lis mes données, et apres je voudrais l effacer pour pas surcharger.
Mon fichier est créé ds le dossier courant.
Pour le code d erreur, j sais pas tro comment le recuperer alors ... :oops:
Et si tu utilises un chemin absolu (pour tester au moins) ?
C'est quoi le type de STRING ?
Avec le chemin absolu : ca ne change rien par rapport a avant (le fichier n est pas effacé)
STRING : d après ce que j ai pu observer, c est un peu comme un const char* (en mieux, sinon, ca aurait servi à rien qu ils s embetent a le reprogrammer...)
La fonction perror permet de récupérer le message d'erreur correspondant à la valeur fixée dans errno.
Edit: perror c'est standard et défini dans <cstdio>Code:
1
2
3
4
5
6
7
8
9
10
11 #include <cerrno> #include <cstdio> using namespace std; int main() { if (remove("exe.txt")) { perror("An error has occurred"); } }
hum, non, j peux pas récupérer le code comme ça... Rien ne s'affiche avec les trucs standards (genre cout...) : encore un truc du logiciel.
Donc qd j écris le code que tu m as donné, il passe bien dans le if, mais il peut pas écrire...
Il faudrait la ligne de code toute seule, que je puisse rediriger dans un fichier...
Si tu disposes d'un debogueur, tu peux récupérer le message d'erreur dans une variable locale afin de le lire, via la fonction strerror dans <cstring>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <cerrno> #include <cstdio> #include <cstring> #include <iostream> using namespace std; int main() { if (remove("out.txt")) { const char * const msg = strerror(errno); // MSG contient le message d'erreur cout << msg << endl; } }
D'où ma surprise avec ton code:Citation:
Envoyé par c_Linoa
les parenthèses après finput1...Code:
1
2 input1.open(finput1());
Attention à bien doubler les antislash avec le chemin absolu
ne marchera pas, car il fautCode:
1
2 remove( "C:\test.txt" );
chez moi ça marche. Si ça ne marche pas chez toi, soit tu as une erreur dans le code (fichier non fermé, path invalide...) soit tu n'as pas les droits pour l'effacer.Code:
1
2 remove( "C:\\test.txt" );
oh la la mais je suis nuuuuuuuuuuuuuulle !
Heureusement que t as dit ca "au cas où"...
Mon fichier était pas fermé au moment où j essayais de l effacer !
Ben désolée pour le dérangement et merci à vous deux !
:lol:
Pense à cliquer sur Résolu ;)