Bonjour!
Mon programme se plante toujours en arrivant à une étape précise. Je pense qu'il y a une incompatibilité de type ou une bêtise dans ce genre, mais je n'ai aucune idée de comment résoudre ça. Le compilateur passe dessus comme si tout allait bien =)
Le problème survient lorsque le programme lit ces deux lignes. Le programme crashe complètement et je suis obligé de le fermer.
texte1.setString(txt[0]); texte2.setString(txt[16]); // J'utilise SFML pour ça
Le tableau est initialisé de la manière suivante:
Il est rempli en utilisant la fonction "Sauvegarde":
1 2 3 4 5 6 7 8 9
| int calc3=0; // Préparation de l'index
while (calc3 < 16)
{ txt[calc3]=Sauvegarde(101+calc3, 0, ""); // Remplissage des cases 0 à 15
calc3++;
}
while (calc3 < 32)
{ txt[calc3]=Sauvegarde(101+calc3, 1, ""); // Remplissage des cases 16 à 31
calc3++;
} |
Voici le header de la fonction "Sauvegarde":
1 2 3 4 5 6 7 8 9 10
| #ifndef SAUVEGARDE_H_INCLUDED
#define SAUVEGARDE_H_INCLUDED
#include <string.h>
using namespace std;
string Sauvegarde(int a, int b, string c);
#endif // SAUVEGARDE_H_INCLUDED |
Et son implémentation:
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
| #include <iostream>
#include <fstream>
#include <string.h>
#include "Sauvegarde.h"
using namespace std;
string Sauvegarde(int a, int b, string c)
{ // a est le numéro du fichier utilisé
// b est la ligne de sauvegarde utilisée
// c est le contenu à écrire ou à retourner
// Déclaration des variables
int x; // Compteur de lignes pour la lecture des fichiers
x=0; // Initialisation
const char* y; // Nom du fichier à lire ou à écrire
switch(a)
{ case 1: y="Donnees/Fichier_1.txt"; break; // Fichier 1
case 2: y="Donnees/Fichier_2.txt"; break; // Fichier 2
case 3: y="Donnees/Fichier_3.txt"; break; // Fichier 3
case 4: y="Donnees/Fichier_4.txt"; break; // Fichier 4
case 101: y="Donnees/Jeu_1.txt"; break; // Pacman 1
case 102: y="Donnees/Jeu_2.txt"; break; // Pacman 2
case 103: y="Donnees/Jeu_3.txt"; break; // Pacman 3
case 104: y="Donnees/Jeu_4.txt"; break; // Pacman 4
case 105: y="Donnees/Jeu_5.txt"; break; // Pacman 5
case 106: y="Donnees/Jeu_6.txt"; break; // Pacman 6
case 107: y="Donnees/Jeu_7.txt"; break; // Pacman 7
case 108: y="Donnees/Jeu_8.txt"; break; // Pacman 8
case 109: y="Donnees/Jeu_9.txt"; break; // Pacman 9
case 110: y="Donnees/Jeu_10.txt"; break; // Pacman 10
case 111: y="Donnees/Jeu_11.txt"; break; // Pacman 11
case 112: y="Donnees/Jeu_12.txt"; break; // Pacman 12
case 113: y="Donnees/Jeu_13.txt"; break; // Pacman 13
case 114: y="Donnees/Jeu_14.txt"; break; // Pacman 14
case 115: y="Donnees/Jeu_15.txt"; break; // Pacman 15
case 116: y="Donnees/Jeu_16.txt"; break; // Pacman 16
}
if (c == "") // Lecture seule dans la mémoire
{ ifstream fichier(y); // Ouvrir le fichier en lecture
while (x <= b)
{ getline(fichier, c);
x++;
}
}
else // Ecriture dans la mémoire (pas encore terminé, mais on s'en fout puisque je ne l'utilise pas encore non plus =D)
{ ofstream fichier(y); // Ouvrir le fichier en écriture
}
return c;
} |
Partager