stack smashing detected Abandon (ubuntu) Erreur 5 sur DevC++
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:
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! :)