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:
Voici maintenant mon fichier main:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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(); }
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.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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; }
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.
Partager