Plantage lors de la lecture d'un fichier C++

Fermé
Zedd7 - 18 avril 2011 à 20:31
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 18 avril 2011 à 20:57
Bonsoir,
Je cherche à créer un programme un C++ qui permettra de jouer au pendu.
Pour cela, je me base sur un dictionnaire en format .txt contenant près de 350000 mots, séparés par des retours à la ligne.

Mon problème est que si j'essaie de copier le contenu du fichier dans une matrice (voir code ci-dessous), la console s'ouvre un instant puis un message d'erreur apparaît, comme quoi mon exécutable a cessé de fonctionner alors que si j'utilise le même code pour un autre dictionnaire en format .txt, mais plus petit, le programme fonctionne normalement.

J'aimerais donc comprendre pourquoi mon programme ne peut pas copier le contenu d'un fichier trop grand et savoir comment y remédier ;)

Le code :


#include <fstream>
#include <iostream>
using namespace std;
void initDico(char dico[100][25]);

int main()
{
int i=0, k=0;
char dictionnaire[100][25];
char chaine[25];
ifstream lecture("dico.txt");
while (!lecture.eof())
{
lecture >> chaine;
for(k=0; k<25; k++)
{
dictionnaire[i][k]=chaine[k];
}
i++;
}
lecture.close();
}

PS: J'utilise CodeBlocks

Merci d'avance
A voir également:

1 réponse

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
18 avril 2011 à 20:57
Avec les tableaux tu seras vite limité en taille, ce n'est pas la meilleure façon de traiter ton problème... Regarde du côté de la STL plutôt.

De même n'utilises pas des tableaux pour représenter tes mots, car si tu prends 25 lettres à chaque fois alors que tu n'en as besoin que de 5, 10... tu vas utiliser bien plus de place que tu n'en as besoin ! Regarde plutôt les string.
0