Bonsoir à tous.

Je viens demander votre aide sur un problème sur lequel je suis entrain de m'arracher les cheuveux, j'aimerais savoir si vous comprenez ce qu'il se passe.

Donc je code actuellement un programme en C dont une partie gère de facon basique des comptes d'utilisateur pour accéder au programme.
Jusqu'à il y a quelques heures tout fonctionnait bien, mais je viens de changer quelque chose et ca ne marche plus du tout, sauf que je n'arrive pas à trouver d'où vient l'erreur, et pour cause :

Voici la partie du main qui bug de toute évidence :

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
int main()
{
    int c = 1; // variable "continuer"
    int cc = 1;
    int i = 0;
    int ii = 0;
 
    DATA data;
 
    if (!charger_data(&data))
    return 0;
 
    printf("DEBUG : CHKPT");
 
(...)
 
return 0;
Or, mon programme plante avant d'afficher CHKPT

MAIS voici maintenant ma fonction charger_data :
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
int charger_data(DATA *data)
{
    printf("DEBUG : charger_dataD");
    if(!charger_fichier_carte(&(data->carte)))
    {
        effacer_fichier_carte(); // Si le fichier carte.txt manque on le crée, puis on relance charger_fichier_carte
        if(!charger_fichier_carte(&(data->carte)))
        {
            printf("ERREUR CRITIQUE : impossible de creer le fichier carte.txt. Arret du programme.\n");
            return 0;
        }
    }
 
    if(!charger_fichier_utilisateurs(&(data->utilisateurs)))
    {
        effacer_fichier_utilisateurs(); // Si le fichier utilisateurs.txt manque on le crée, puis on relance charger_fichier_carte
        if(!charger_fichier_utilisateurs(&(data->utilisateurs)))
        {
            printf("ERREUR CRITIQUE : impossible de creer le fichier utilisateurs.txt. Arret du programme.\n");
            return 0;
        }
    }
 
    printf("DEBUG : charger_dataF");
 
    return 1;
}
Or lorsque je lance l'exécutable, il se passe exactement la chose suivante :

- DEBUG : charger_dataD est correctement affiché
- DEBUG : charger_dataF est correctement affiché

le programme cesse de fonctionner et windows l'arette
- le programme affiche : Process returned 255 (0xFF)

- DEBUG : CHKPT n'est pas affiché !

Pourtant, printf("DEBUG : CHKPT") est l'instruction qui suit directement charger_data(&data)...

Bref, je ne comprends pas du tout comment ce genre de chose est possible et de fait il m'est impossible de trouver l'erreur de mon programme, depuis la dernière compilation fructueuse j'ai changé le mode de gestion des utilisateurs donc je pense que c'est là dedans qu'il y a erreur, mais alors pourquoi DEBUG : charger_dataF s'affiche-t-il correctement ?

Si quelqu'un y comprend quelque chose je lui serai très reconnaissant de m'expliquer ce qu'il peut bien se passer