Salut!

Pour un logiciel que je suis en train de concevoir, j'aimerais disposer d'une fonction qui lirait ou écrirait dans mes fichiers de sauvegarde enregistrés au format .txt

Je crois que cette fonction ne marche pas bien. Le programme qui l'utilise a tendance à se crasher au moment de l'utiliser environ 130 fois.
Je maîtrise encore assez mal la lecture/écriture de fichiers texte... =)

Voici le code source actuel, et j'aimerais lire vos suggestions si vous en avez.

(EDIT: Nouvelle version un peu plus bas)
Sauvegarde.h:
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
Sauvegarde.cpp:
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
#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
 
    char* y; // Nom du fichier à lire ou à écrire
 
    switch(a) // Ceci permet d'orienter la fonction vers un des fichiers qui contient des données intéressantes, en-fonction des arguments donnés.
    {   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/Pacman_1.txt";   break; // Pacman 1
        case 102:   y="Donnees/Pacman_2.txt";   break; // Pacman 2
        case 103:   y="Donnees/Pacman_3.txt";   break; // Pacman 3
        case 104:   y="Donnees/Pacman_4.txt";   break; // Pacman 4
        case 105:   y="Donnees/Pacman_5.txt";   break; // Pacman 5
        case 106:   y="Donnees/Pacman_6.txt";   break; // Pacman 6
        case 107:   y="Donnees/Pacman_7.txt";   break; // Pacman 7
        case 108:   y="Donnees/Pacman_8.txt";   break; // Pacman 8
        case 109:   y="Donnees/Pacman_9.txt";   break; // Pacman 9
        case 110:   y="Donnees/Pacman_10.txt";  break; // Pacman 10
        case 111:   y="Donnees/Pacman_11.txt";  break; // Pacman 11
        case 112:   y="Donnees/Pacman_12.txt";  break; // Pacman 12
        case 113:   y="Donnees/Pacman_13.txt";  break; // Pacman 13
        case 114:   y="Donnees/Pacman_14.txt";  break; // Pacman 14
        case 115:   y="Donnees/Pacman_15.txt";  break; // Pacman 15
        case 116:   y="Donnees/Pacman_16.txt";  break; // Pacman 16
 
        case 201:   y="Donnees/Chargement_1.txt";   break; // Chargement 1
    }
 
    if (c == "") // Lecture seule dans la mémoire
    {   ifstream fichier(y);  // Ouvrir le fichier en lecture
 
        while (x <= b)
        {   getline(fichier, c);
            x++;
        }
 
        fichier.close();
    }
 
    else // Ecriture dans la mémoire
    {   ofstream fichier(y);  // Ouvrir le fichier en écriture
 
        fichier.close();
    }
 
    return c;
}
Si c'est nécessaire, vous pouvez poser toutes les questions! =D