C++ Erreur variable

HTML BOY -  
 HTML BOY -
Bonjour, ce code ne marche pas :

#include <cstdlib> 
#include <iostream> 
#include <fstream> 

using namespace std; 

int main() 
{ 

    string fichier; 

    cout << "Veuillez entrer le nom du fichier à supprimer :" << endl; 

    cin>>fichier; 

    if(!remove(fichier)=0) 
    { 
        cout << "Suppression du fichier effectué !" << endl; 
    } 
    else 
    { 
        cout << "Erreure lors de la supression !" << endl; 
    } 

    int pause; 

    cin>>pause; 

    return 0; 
} 


Seriez-vous m'expliquer pourquoi ?
Merci de vos futurs réponse !

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

La prochaine fois que tu as une erreur, n'hésite pas à copier coller le message d'erreur. Non seulement, il précise la ligne, mais en plus cela donne une idée de l'erreur.

Dans ton cas, l'erreur vient de if(!remove(fichier)=0)
En C++, l'opérateur de comparaison est == pas le simple =.
Cdlt,
0
HTML BOY
 
Merci de ta réponse, mais cela m'affiche la même erreur :
error: cannot convert 'std::string' to 'const char*' for argument '1' to 'int remove(const char*)'|
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
L'erreur est simple.
L'argument doit être de type const char*, alors que toi tu y mets un string.
Il faut que tu le convertisses en char* ou alors que tu mettes ta variable en tableau de char.
Cdlt,
0
HTML BOY
 
Peux-tu parler en français STP ^^
Non, sérieux, je ne comprend pas du tout le message que tu essayes de me faire passer !
Désolé de mon manque de compréhension, mais je suis archi nul ...
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Un peu d'anglais : error: cannot convert 'std::string' to 'const char*' for argument '1' to 'int remove(const char*)'
Erreur : impossible de convertir 'std::string" en 'const char*' dans la fonction int remove(const char*).
Effectivement, dans remove, il faut mettre une variable de type "const char*". Alors que toi tu as mis : string fichier, et non char fichier[20];

Si tu comprends pas ce qu'est une variable, un type, un const char*, je te conseille d'aller sur le site du zéro pour apprendre les bases. Sans ça, tu resteras souvent bloquer.
Cdlt,
0
HTML BOY
 
OK, bonne idée, j'y vais !
Je pense que cela aurai était plus simple que tu me donnes le code,
mais après tout en est sur un forum et qui dit forum dit se débrouiller un peu tout seul ^^
En tout cas, merci de ton aide !
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Je pense que cela aurai était plus simple que tu me donnes le code
Ben je te l'ai donné...
Alors que toi tu as mis : string fichier, et non char fichier[20];
Dis autrement, remplace string fichier; par char fichier[20]; et cela devrait marcher.
0
HTML BOY
 
Merci !

Don voici mon code mis à jour :

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{

    char fichier[20];

    cout << "Veuillez entrer le nom du fichier à supprimer :" << endl;

    cin>>fichier;

    remove(fichier);

    cout << "La supression a été effectué avec succes !" << endl;

    int pause;

    cin>>pause;

    return 0;
}



Seulement les espaces tapé ne sont pas géré !!!
Comment puis-je y remédier ?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
A la place de cin>> fichier, mets : getline(cin,fichier);
0
HTML BOY
 
Ha, petite erreur :
error: no matching function for call to 'getline(std::istream&, char [20])'
Mais en cherchant un peu, j'ai trouvé sa :

#include <cstdlib> 
#include <iostream> 
#include <fstream> 


using namespace std; 

int main() 
{ 

    string fichier; 

    cout << "Veuillez entrer le nom du fichier à supprimer :" << endl; 

    getline(cin,fichier); 

    const char * fichier2 = fichier.data (); 

    remove(fichier2); 

    cout << "La supression a été effectué avec succes !" << endl; 

    int pause; 

    cin>>pause; 

    return 0; 
}
0