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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
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
#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;
}