Problème avec fseek( )

juancho2786 Messages postés 39 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 29 octobre 2008 - 21 déc. 2005 à 00:51
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 21 déc. 2005 à 09:21
Bonsoir, je suis occupé sur un petit programme ( de débutant ) qui demande a l'utilisateur son nom, prénom et date de naissance. Ensuite il met ses infos dans un fichier .txt
ex: 1.Dupont M...
2.Dujardin L...
Le probleme c'est que quand je ferme le programme et je le reouvre il recommence a partir de 1 et pas a 3.

J'ai essayé tout ce que j'ai pu mais sans succes pouvez vous me donner un petit coup de pouce.
voici la source :

#include <stdio.h>


char nom[20];
char prenom[20];
char datenaissance[12];
char test;
int max;


main()


{

printf("----------------------- << Carnet d'adresse >> ----------------------- \n");

FILE* LeFichier;
LeFichier = fopen("adresse.txt","r");
fseek(LeFichier,0,SEEK_SET);
fscanf(LeFichier,"%d",&max);
fclose(LeFichier);

LeFichier= fopen("adresse.txt","a");
test='o';


while (test!='n')
{

printf("Il y a déjà %d contacts inscrit\n\n\n",max);
fprintf(LeFichier,"\n%d.\n",max+1);
printf("Nom:");
fgets(nom, 20, stdin);
fprintf(LeFichier,"nom: %s",nom);
printf("Prénom:");
fgets(prenom, 20, stdin);
fprintf(LeFichier,"prénom: %s",prenom);
printf("Date de naissance jj/mm/aa:");
fgets(datenaissance, 12, stdin);
fprintf(LeFichier,"Date de naissance: %s\n",datenaissance);
max++;
printf("Voulez-vous rajouter une autre personne (o/n) ?");
scanf("%s",&test);
fflush(stdin);

}


max++;
fseek(LeFichier,0,SEEK_SET);
fprintf(LeFichier,"%s\n",max);

fclose(LeFichier);

return 0;

}

Je pense que le probleme vient du fseek().

Merci pour votre aide...

Juancho

2 réponses

juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
21 déc. 2005 à 02:53
Bonjour,

SEEK_SET c'est le debut, SEEK_END la fin.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
21 déc. 2005 à 09:21
scanf("%s",&test);
=> test étant un simple caractère ça va planter.
scanf("%c",&test);

Ensuite, quand tu ouvres ton fichier, tu te places au début et tu lis le premier chiffre écrit ( en l'occurrence l'indice du premier contact soit 1).

Pour t'en sortir, tu peux stocker tes paramètres dans une structure, comme cela pour savoir le nombre d'enregistrements, tu divises la taille du fichier par la taille de la structure.
fonctions : ftell, fread, fwrite.
0
Rejoignez-nous