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

Résolu/Fermé
terminatorn Messages postés 148 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 27 avril 2012 - 27 avril 2012 à 13:34
terminatorn Messages postés 148 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 27 avril 2012 - 27 avril 2012 à 18:21
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
A voir également:

2 réponses

terminatorn Messages postés 148 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 27 avril 2012 6
27 avril 2012 à 18:21
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
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 avril 2012 à 14:35
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