Bonjour
Dans le cadre d'un petit jeu 2d que j'aimerais faire histoire de me remttre dans le bain de la prog, j'ai envie de créer un code qui :
-Ouvre un fichier.txt
-Lit les deux premières lignes du fichiers, qui servent à assigner le nombre de lignes et de colonnes qui serviront dans le niveau
-Alloue ensuite dynamiquement une "matrice"
-Remplie la matrice Matrice[i][j][l] = '0'
->C'est à cet endroit que cela pose problème : Mon programme se compile, mais dès qu'il s'allume, il coupe automatiquement...
Ca doit être une erreur du débutant toute bête, mais je n'arrive pas à la déceler
Voici le code :
Voici ensuite la partie qui pose problème :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 #include <stdio.h> #include <stdlib.h> #define TAILLE_MAX 100 int main(int argc, char *argv[]) { /* Déclaration des variables */ FILE* fichier = NULL; //On déclare le fichier char chaine_temp[TAILLE_MAX] = "" ; char carac_temp = '0' ; //Initialisateur de boucles int i = 0; int j = 0; int l = 0; //Taille du niveau int NbColonnes = 0; int NbLignes = 0; //Matrice du niveau char*** Matrice = {NULL} ; fichier = fopen("fichier.txt", "r+"); //On ouvre le fichier //Test de l'ouverture du fichier if(!fichier != NULL) { printf("erreur lors de l'ouverture du fichier !\n"); system("PAUSE"); return 1 ; } //On lit les deux premières lignes, puis on les écrits dans des variables for(i=0; i<2; i++) { fgets(chaine_temp, TAILLE_MAX, fichier); if(i == 0) { sscanf(chaine_temp, "%d", &NbColonnes); } if(i == 1) { sscanf(chaine_temp, "%d", &NbLignes); } } //On alloue dynamiquement le niveau Matrice = malloc(NbColonnes * sizeof(char)); for(i=0; i<NbColonnes; i++) { Matrice[i] = malloc(NbLignes * sizeof(char)); } for(i=0; i<NbColonnes; i++) { for(j=0; j<NbLignes; j++) { Matrice[i][j] = malloc(3 * sizeof(char)); } } //On entre ensuite chaque valeur du fichier texte dans la Matrice for(j=0; j<NbLignes; j++) { for(i=0; i<NbColonnes; i++) { carac_temp = fgetc(fichier); if(carac_temp != ' ') //Si le caractère n'est pas un espace { for(l=0; l<3; l++) { //Alors on entre les 3 caractères dans le tableau Matrice[i][j][l] = carac_temp ; } } } } //Vérification : on affiche le tableau ! for(i=0; i<NbColonnes; i++) { for(j=0; j<NbLignes; j++) { for(l=0; l<3; l++) { printf("%c", Matrice[i][j][l]); } } } //On ferme le fichier fclose(fichier); system("PAUSE"); return 0; }
Et enfin le fichier texte :
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 //On entre ensuite chaque valeur du fichier texte dans la Matrice for(j=0; j<NbLignes; j++) { for(i=0; i<NbColonnes; i++) { carac_temp = fgetc(fichier); if(carac_temp != ' ') //Si le caractère n'est pas un espace { for(l=0; l<3; l++) { //Alors on entre les 3 caractères dans le tableau Matrice[i][j][l] = carac_temp ; } } } }
Je suis prêt à donner plus de renseignement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 10 8 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
Merci de votre aide![]()
Partager