Bonjour,
dans le cadre d'une étude sur la programmation C++ (EDUCATEL), je dois créer une application de gestion de base de données pour une pharmacie.
Lors de mon entrée dans le menu fournisseur je désire "récupérer" les données de mon fichier Fournisseurs dans un tableau d'objets fournisseur.
Voici une partie de mon code :
Lorsque je compile mon application, le message d'erreur suivant apparait :
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 void __fastcall TAdminFournisseurs::FormShow(TObject *Sender) { /* Déclaration des variables locales*/ char* tampon; char temp[100]; char t; unsigned int occ,i;/* Ouverture du fichier en lecture seule */ afFournisseur=fopen("Fournisseurs","r");/* allocation de mémoire pour le tableau d'objets fournisseur */ ListFourn=new fournisseur[1]; NbrFiches=0;/* Début de condition SI(eff_FC_I01) */ if(afFournisseur) {/* Début de boucle FAIRE...TANT QUE (eff_FC_I01_D02)*/ do { AjouteUneFiche(); ListFourn[NbrFiches-1].SaisieFiche(NbrFiches-1); occ=0; do { fscanf(afFournisseur,"%c",t); temp[occ]=t; occ++; } while(t!='\t' && t!='\n'); tampon=new char[++occ]; for(i=0;i<occ-1;i++) tampon[i]=temp[i]; tampon[occ-1]; ListFourn[NbrFiches-1].SaisieNom(tampon); ....}
Puis, le programme reste bloqué au niveau de la ligne de mon fscanf.Le projet TravRecap.exe a provoqué une classe d'exception EAccessViolation avec le message 'Violation d'accès à l'adresse 32664354 dans le module 'CC3260MT.DLL'. Ecriture de l'adresse 00000000'. Procesus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
Je ne vois pas où j'ai pu blairer puisque j'alloue de l'espace à chaque variable. Peut être est-ce dans mon utilisation du fscanf ?
Merci de m'aider un peu.
Partager