Bonjour

Je débute en programmation C et en informatique tout court.

Je suis en train de créer un petit programme de gestion de location et code la partie qui concerne les clients, fournisseurs et propriétaires. J'ai commencé par coder la procédure de chargement de mes fichiers texte. A la compilation pas de problème mais à l'exécution...c'est le drame!!!
- sur ubuntu j'ai le message "stack smashing detected Abandon " et rien ne se passe
- sur DevC++, au bout d'un temps assez long j'ai une fenêtre erreur ci-dessous mais ca s'exécute pas comme je veux mais ca tourne.

---------
Platform : Windows NT
OS version : version 6.1 (build 7601)
Additional info: Service Pack 1


The following error occured in version 4.9.9.2:
System Error. Code: 5.
Accès refusé (at address 0x0040F0EE)


Please include a description of what you were doing before the error occured (please give as much precisions as possible) :


State information follows:
Stack trace:
------------
0058F80A (0018E80A): ShowExceptionInfo (ExceptionsAnalyzer - 566)
0058F9FF (0018E9FF): TExceptionsAnalyzer.GlobalExceptionHandler (ExceptionsAnalyzer - 574)
00589832 (00188832): TEditor.EditorHintTimer (editor - 1393)
0059105B (0019005B): (devcpp - 230)
00591079 (00190079): (devcpp - 230)

Voici mon code en C
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
 
#include <stdio.h>
#include <string.h>
 
#define MAX_PERSONNE 500
#define PERSONNE_NON_TROUVE -1
#define FICHIERF "fournisseur.txt"
#define FICHIERA "proprio.txt"
#define FICHIERC "client.txt"
 
struct personne{
	char code[1] 		; //A pour proprio, F pour fournisseur et C pour client 	
	char num[5]		; // identifiant Ã* 4 chiffre en autoincrementation
	char nom[100]		; //commun Ã* Client, Fournisseur et proprio
	char prenom[100]	;
	char telFixe[13]	; 	
	char telPort[13]	; 	
	char mail[100] 		;
	char adrs[500]    	;
	char entreprise[100]	; // pour proprio et fournisseur
	char sireten[14] 	; // SIRET 14 chiffres et SIREN 9 chiffres  - pour proprio et fournisseur
	char TCnil[7] 		; // Ce qui commence par T (pour Tag) est spécifique au propriétaire
	char TRest[50]		; // numero de petite licence restaurant composition indéterminée
	char TAdher[12] 	; // numero d'adhérent au réseau Eco-Gite YYYYMMDDNNNN
	char TQualifEnv[13] 	; // numero de la qualif. Environnementale XYYYYMMDDNNNN - type de qualif concaténer au num_adher
};
 
int nbproprio=1		;	//la ligne 0 contient les noms des variables
int nbfournisseur=1	;
int nbclient=1		;
 
struct personne tab_proprio[MAX_PERSONNE]	;
struct personne tab_fournisseur[MAX_PERSONNE]	;
struct personne tab_client[MAX_PERSONNE]	;
 
void chargerTabPersonne(char NomFile[50], int nbpersonne) ; 
 
 
main()
{
 struct personne individu;
 int choix = -1;
 while(choix!=0)
 {
          printf("- 1 - Saisie\n")                                ;
          printf("- 2 - Affichage\n")                             ;   
          printf("- 3 - Sauvegarde\n")                            ;
          printf("- 4 - Charger un fichier\n")                    ;
          printf("- 5 - Rechercher\n")                            ;
          printf("- 6 - modifier\n")                              ;
          printf("- 0 - Quitter\n")                               ;
 
          scanf("%d",&choix)                                      ;
 
          switch(choix)                                      
           {
            case 1: printf("test saisie()\n")                        ;
                 break                                                ;
            case 2: printf("test affichage()\n")                     ;
                 break                                                ;
            case 3: printf("test sauvgarder()\n")                    ;
                 break                                                ;
            case 4: printf("test charger()\n")                       ;
		 chargerTabPersonne(FICHIERF, nbfournisseur)	;
                 break                                                ;
            case 5: printf("test rechercher()\n")                    ;
                 break                                                ;
            case 6: printf("test modifier()\n")                      ;
                 break                                                ;
            case 0: printf("Vous avez choisi de quitter cette rubrique.\n")              ;
                 break                                                                   ;
            default: printf("Erreur de saisie\n")                                        ;
                 break                                                                   ;
           }
 
 }
}
 
void chargerTabPersonne(char NomFile[50], int nbpersonne) //char nomfichier[],
{
 FILE *entree		;
 struct personne temp	;
 int test 		;
 
 //char NomFile[50]	;
 
 
 entree=fopen(NomFile,"r");	
 if(entree==NULL)
 {
	printf("Acces au fichier %s impossible\n", NomFile);
	printf("coucou1_pbmaccesfichier\n");
 }
 else
 {
  while((! feof(entree)) && (nbpersonne<MAX_PERSONNE))
   {
 printf("coucou2_while\n");
   test=fscanf(entree,"%s %s %s %s %s %s %s %s %s %s %s %s %s", temp.code, temp.num, temp.prenom, temp.telFixe, temp.telPort, temp.mail, temp.adrs, temp.entreprise, temp.sireten, temp.TCnil, temp.TRest, temp.TAdher, temp.TQualifEnv);
	if(test != EOF)
	{
 
	 if(temp.code[0]=='P')
	  {
		tab_proprio[nbproprio++]= temp		;
		printf("coucou3_tabproprio\n");
	   }
	 if(temp.code[0]=='F')
	  {
		tab_fournisseur[nbfournisseur++]= temp	;
		printf("coucou4_tabfourn\n");
	   }
	if(temp.code[0]=='C')
	  {
		tab_client[nbclient++]= temp		;
		printf("coucou5_tabclient\n");
	   }
   	}
   }
 }
 fclose(entree)						;
 printf("coucou6_fichier_fermer\n");
}
J'ai fait des recherche sur stack smashing mais je n'arrive pas à comprendre ce qui coince sur ubuntu. Si quelqu'un peu me débloquer.

Merci à tous!