Lecture fichier C++

juju -  
 azzeddine -
Bonjour,
je fais du C/C++ sur linux
Je souhaiterai faire une fonction qui me permet de lire un fichier au format nom_joueur.txt que j'ai sauvegardé avant.
j'effectue en commande :
strcat (joueur1.nom, ".txt");
j'ai donc dans joueur.nom : Toto.txt (si le nom du joueur est toto!)
J'ai verifié j'ai bien dans mon dossier ce fichier.
Je souhaite donc ouvrir ce fichier en faisant :
ifstream lecture (joueur1.nom);
Quand je compile : erreur de segmentation!
J'ai vérifié en faisant des tests le probleme est qu'il ne lit pas du tout le fichier.
Comment faire?Merci

4 réponses

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    à la place de cerr, tu peu mettre perror().
    compile avec l'option de debug (-g je croi)
    puis lance ton programme avec gdb :
    gdb *.exe
    run

    il te dira où est exactement ton erreur de segmentation.
    iflect>>type;//lit le type
    peut être source d'erreur, car 'type' est de type char, donc il faut que dans ton fichier la premiere donné soit un carctère unique.
    1
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut.
    quel est le type de joueur1.nom ?
    fait une sortie de joueur1.nom voir si il est bien modifier.
    Tu fait du C++, donc autant utiliser <string> de la STL.
    string joueur1.nom;//tu met le type string à nom
    donc ensuite,
    fstream lecture((jouer1.nom+".txt").c_str(),std::ios::in);
    ensuite, fait une sortie de lecture, vérifier qu'il n'est pas nul (que l'ouverture a bien fonctionner)
    de la façon suivante :
    if (!lecture) cerr<<"pb d'ouverture\n";// technique vue l à : https://en.cppreference.com/w/cpp/io/basic_fstream/open
    bonne chance
    0
  3. juju
     
    j'ai essayé mais ca ne marche pas non plus!
    En fait je fais du C/C++ pas vraiment du C++ (pas vu cerr, str()...)
    voici ma fonctionen entier :

    void fonction (joueur joueur1)

    {
    char type, ligne, direction;
    int colonne, nombre, i, t;
    strcat (joueur1.nom, ".txt");
    cout<<"fichier "<<joueur1.nom<<endl;
    ifstream iflect (joueur1.nom);
    for (i = 0; i<5; i++)
    {
    iflect>>type;//lit le type
    cout<<"type "<<type;
    iflect>>nombre;//lit le nombre de bateau de ce type
    cout<<"nombre : "<<nombre;
    while (nombre>0) //tant qu'il y a des bateaux
    {
    iflect>>ligne;
    cout<<"ligne "<<ligne;
    iflect>>colonne;
    iflect>>direction;
    //place le bateau
    placer_bateau(ligne, colonne, direction, type, joueur1.mon_tab);
    nombre--;
    }
    }
    iflect.close();
    }

    typedef struct {
    char nom[20];
    char ** mon_tab;
    char ** mes_tirs;
    flotte flotte_adversaire;
    } joueur;
    0
  4. azzeddine
     
    salut
    j'amerai bien savoir ou d'envoyer des nouveaux programme écrit en c ou des documents pour un débitant concernant "formation"
    mes salutations
    0