probleme d ecriture dans un fichier - C - Programmation
Marsh Posté le 14-03-2005 à 21:38:58
et en mettant sizeof(*pt) ?
a moins que je dise une connerie énorme
et fflush(stdin), c'est mal , fflush n'a pas de comportemetn bien défini quand il travaille sur stdin
Marsh Posté le 14-03-2005 à 21:45:37
non j ai trouve mon erreur en regardant sur un site je dois faire un fopen au debut de ma fonction d ajout alors que je n ai pas fait de fcolse dans test :s le fichier reste ouvert mais ....
Marsh Posté le 14-03-2005 à 21:51:29
jon_w748 a écrit : voila j ai un probleme je n arrive pas a ecrire dans mon fichier le programme plante lors du fwrite si qq un pouvait merci d avance !!! |
Déjà, ça compile pas...
|
Ensuite, entre scanf() et gets(), les saisies sont extrêmement fragiles.
http://mapage.noos.fr/emdel/notes.htm#saisie
Enfin, la gestion des fichiers est très douteuse...
http://mapage.noos.fr/emdel/notes.htm#fichiers
Marsh Posté le 14-03-2005 à 21:08:11
voila j ai un probleme je n arrive pas a ecrire dans mon fichier le programme plante lors du fwrite si qq un pouvait merci d avance !!!
voici le code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void testfichier(FILE *,FILE *);
void ajout(struct FICHE *pt,FILE *);
void tri(struct INDEX *,int);
void insertion(struct INDEX *,int,struct INDEX *);
struct FICHE{
int matr;
char nom[20];
char prenom[15];
};
struct INDEX{
char nom [20];
long pos;
};
void main()
{
struct FICHE membre;
struct INDEX index;
int choix;
int i=1;
FILE *fp;/*pointeur du fichier membre.dat*/
FILE *fpi;/*pointeur du fichier d index*/
while(i>0)
{
printf(" ------------------MENU-----------------\n" );
printf("| 1:encodage |\n" );
printf("| 2:quitter |\n" );
printf(" ---------------------------------------\n" );
printf(" choissisez l option desirez:" );
choix=getchar();
printf("\n" );
switch(choix)
{
case'1':testfichier(fp,fpi);
ajout(&membre,fp);
break;
case'2':i=-1;
}
fflush(stdin);
}
fcloseall();
}
/************************************************************************
*I:ADRESSE DE DEBUT DE TABLEAU ET NOMBRE DE FICHE *
*P:TRI PAR VECTEUR D INDEX *
*O:---------------------------------------------------------------------*
************************************************************************/
void testfichier (FILE *fp,FILE *fpi)
{
int choix,i=1;
fp = fopen ("C:\\fichier\\membre.dat", "r+b" );
if (fp == NULL)
{
printf("le fichier n a pas pu etre ouvert ou n existe pas\n" );
printf("CREATION DU FICHIER !!!!!\n" );
fp = fopen ("C:\\fichier\\membre.dat", "wb" );
fpi = fopen ("C:\\fichier\\membre.ndx", "wb" );
printf("le fichier a ete cree\n\n" );
}
else
{
if (fp != NULL)
{
printf("le fichier existe deja\n\n" );
fflush(stdin);
while(i>0)
{
printf(" ------------------MENU-----------------\n" );
printf("| 1:creation du nouveaux fichier |\n" );
printf("| 2:garder le fichier present |\n" );
printf(" ---------------------------------------\n" );
printf(" choissisez l option desirez:" );
choix=getchar();
printf("\n" );
switch(choix)
{
case'1':fp = fopen ("C:\\fichier\\membre.dat", "wb" );
fpi = fopen ("C:\\fichier\\membre.ndx", "wb" );
printf("le nouveau fichier a ete cree\n" );
i=-1;
break;
case'2':i=-1;
}
fflush(stdin);
}
}
}
}
/************************************************************************
*I:ADRESSE DE DEBUT DE TABLEAU ET NOMBRE DE FICHE *
*P:TRI PAR VECTEUR D INDEX *
*O:---------------------------------------------------------------------*
************************************************************************/
void ajout(struct FICHE *pt, FILE *fp)
{
printf("entrez le matricule:\n" );
fflush(stdin);
scanf("%d",&pt->matr);
printf("entrez le nom\n" );
fflush(stdin);
gets(pt->nom);
printf("entrez le prenom\n" );
fflush(stdin);
gets(pt->prenom);
system("cls" );
fwrite(&pt,sizeof(pt),1,fp);
}
voila c est dans la fonction ajout que ca plante au moment du fwrite mais je ne trouve pas mon erreur
merci d avance