IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème de remove


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut problème de remove
    Salut !

    J ai un ptit problème avec le remove... il n efface pas mon fichier !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    STRING finput1 = "exe.txt";
    input1.open(finput1());
    ...
    input1.close();
    remove("exe.txt");
    Une idée ?
    Merci !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    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.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    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 ...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    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.

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Et la lecture fonctionne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input1.open(finput1());
    j'ai comme un doute sur cette ligne.
    Tu travailles avec quoi ? Il est où ton fichier ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    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 ...

  7. #7
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Et si tu utilises un chemin absolu (pour tester au moins) ?
    C'est quoi le type de STRING ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    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...)

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    La fonction perror permet de récupérer le message d'erreur correspondant à la valeur fixée dans errno.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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");
      }
    }
    Edit: perror c'est standard et défini dans <cstdio>

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    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...

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;  
      }
    }

  12. #12
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par c_Linoa
    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...)
    D'où ma surprise avec ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    input1.open(finput1());
    les parenthèses après finput1...
    Attention à bien doubler les antislash avec le chemin absolu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    remove( "C:\test.txt" );
    ne marchera pas, car il faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    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 !


  14. #14
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Pense à cliquer sur Résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Entité comme table de jointure, problème de remove
    Par gorhh dans le forum Persistance des données
    Réponses: 0
    Dernier message: 14/05/2014, 16h56
  2. problème int remove() sur windows
    Par zentaf dans le forum C
    Réponses: 2
    Dernier message: 11/04/2013, 11h29
  3. Réponses: 4
    Dernier message: 03/11/2007, 23h34
  4. Réponses: 7
    Dernier message: 22/06/2007, 10h56
  5. Réponses: 3
    Dernier message: 12/04/2007, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo