[C++] Chargement de fichier en mémoire

Résolu
terminatorn Messages postés 190 Statut Membre -  
terminatorn Messages postés 190 Statut Membre -
Bonjour, j'aimerai charger un fichier en mémoire comme ceci:

Un vecteur de chaines de caractères, chaque élément du vecteur correspond à une ligne du fichier.

Voila comment j'ai fait mais ça marche pas:

#include <iostream>
#include <stdio.h>
#include <vector>
 
 
using namespace std;
 
int main()
{
    unsigned int i=0,j=0;
    const char *filename = "C:\\test.txt";
    FILE* fichier = NULL;
    vector<char *> ligne;
    char tmp[1000];
    fichier = fopen(filename, "r");
    if (fichier != NULL){
        while (fgets(tmp, 1000, fichier) != NULL){
            ligne.push_back(tmp);
            i++;
        }
        fclose(fichier);
        for (i=0;i<ligne.size();i++)
            printf("[%d] %s\n",i, ligne[i]);
 
    } else {
        printf("Erreur : impossible d'ouvrir le fichier\n");
    }
    return 0;
}


Ça m'affiche la dernière ligne du fichier autant de fois qu'il y a de ligne dans le fichier.

Pouvez vous m'aider svp? Merci d'avance

2 réponses

  1. terminatorn Messages postés 190 Statut Membre 6
     
    Merci j'ai fais comme ça.

    Ca marche bien =D

    int main(){
        vector<string> l;
        unsigned int i=0,j=0;
        const char *filename = "C:\\Users\\Nurza\\Igloo\\bin\\Debug\\test.igloo";
        FILE* fichier = NULL;
        char tmp[1000];
        fichier = fopen(filename, "r");
        if (fichier != NULL){
            while (fgets(tmp, 1000, fichier) != NULL){
                l.push_back(string(tmp));
            }
            fclose(fichier);
        } else {
            printf("Erreur : impossible d'ouvrir le fichier\n");
        }
    }
    


    Encore merci
    1
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    qui a faire du C++ utilise au minimum les pointeurs.
    Utilises les string :
    #include <string>
    vector<string> ligne;
    puis ligne.push_back(string(tmp));
    avec ça, le programme devrait fonctionner.
    0