C++: Violation d'acc�s � la lecture
Bonjour � tous,
Je sais que c'est un probl�me assez classique, mais, malgr� mes recherches, je n'ai trouv� aucune solution. En fait la compilation de mon code se passe avec succ�s, mais lors de l'ex�cution j'ai ce message d'erreur qui s'affiche:
Exception non g�r�e � 0x00a3a6f9 dans graphe.exe*: 0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0xcccccccc.
J'utilise Visual Studio 2010 et voici la fonction utilis�e:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| graphe::graphe(char* NomFichier)
{
ifstream fichier(NomFichier);
string ligne;
int num = 1;
while(getline(fichier, ligne) && num<=2)
{
if(num == 1) // Si num = 1, alors on lit la première ligne du fichier qui contient le tableau fs
{
int j = 0;
for(int i=0; i<ligne.length() ; i++)
{
if(ligne[i]!='\n')
{
string tmp;
tmp=ligne[i];
if(i+1<ligne.length())
i++; // Pour être positionné au caractère suivant
while(ligne[i]!=';' && i<ligne.length())
{
tmp = tmp+ligne[i];
i++;
}
if(i==0)
{
fs=(int*)malloc(atoi(tmp.c_str())+1);
}
fs[j]= atoi(tmp.c_str());
j++;
}
}
}
else
{
if(num==2) // Si num=2, alors il s'agit de la 2è ligne du fichier qui contient le tableau aps
{
int j = 0;
for(int i=0; i<ligne.length() ; i++)
{
if(ligne[i]!='\n')
{
string tmp;
tmp=ligne[i];
if(i+1<ligne.length())
i++; // Pour être positionné au caractère suivant
while(ligne[i]!=';' && i<ligne.length())
{
tmp = tmp+ligne[i];
i++;
}
if(i==0)
{
aps=(int*)malloc(atoi(tmp.c_str())+1);
}
aps[j]= atoi(tmp.c_str());
j++;
}
}
}
}
num++;
}
fichier.close();
} |
Voici maintenant mon fichier main:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include "graphe.h"
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char* NomFichier = "essai.txt";
graphe g(NomFichier);
for(int i=1; i<=g.fs[0];i++)
cout<< g.fs[i] << " ";
cout<<endl;
for(int i=1; i<=g.aps[0];i++)
cout<< g.aps[i] << " ";
system("PAUSE");
return EXIT_SUCCESS;
} |
Je pr�cise que fs[0] contient le nombre d'�l�ment du tableau fs -1 (sans la premi�re case donc) et idem pour le tableau aps.
Ce que la fonction graphe est cens� faire est, � partir du fichier txt, mettre les nombres de la 1� ligne dans le tableau fs et ceux de la deuxi�me dans le tableau aps. Ces nombres sont s�par�s par des points virgules.
Merci d'avance.