Modification , supression et tri en fichier

Fermé
asmabenslimene Messages postés 7 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 24 mars 2015 - 16 mars 2015 à 14:34
asmabenslimene Messages postés 7 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 24 mars 2015 - 16 mars 2015 à 21:52
bonjour , j'ai besoin d'aide , absolument perdu en PROGRAMMATION C , j'essaye de modifier des chanps dans une structure au sein d'une fichier et j'arrive pas de plus la supression ensuite le tri , voici mes proposition mais rien ne marche correctement :( heelp me !!
pour la modification voici ma structure
struct dr
{
int jour;
int mois;
int annee;
};
//typedef struct
struct liste
{
int matricule;
char NomPrenom[21];
struct dr dateEntree;
float salaire;
char sexe[2];
struct liste * next;
};
struct dr
{
int jour;
int mois;
int annee;
};
//typedef struct
struct liste
{
int matricule;
char NomPrenom[21];
struct dr dateEntree;
float salaire;
char sexe[2];
struct liste * next;
};

struct dr
{
int jour;
int mois;
int annee;
};
//typedef struct
struct liste
{
int matricule;
char NomPrenom[21];
struct dr dateEntree;
float salaire;
char sexe[2];
struct liste * next;
};
Voici comment j'ajoute les employés
do
{

do
{printf("-Matricule : ");
scanf("%d",&M);
//printf("\n%d",Recherche(first,M));
}
while(((100000000 <= M) || (M<=0)) || (Recherche(first,M)==1));

first1->matricule=M;
do
{
printf("\n-Nom et Prenom : ");
fflush(stdin);
gets(first1->NomPrenom);
} while(strlen(first1->NomPrenom)>21);

printf("\n-Date d'entree : ");
do
{printf("\n-jour : ");
scanf("%2d",&((first1->dateEntree).jour));}
while((first1->dateEntree.jour < 1 )|| (first1->dateEntree.jour > 31));
do
{
printf("\n-Mois :");
scanf("%2d",&((first1->dateEntree).mois));
}
while((first1->dateEntree.mois < 1 )|| (first1->dateEntree.mois > 12));
do
{
printf("\n-annee :");
scanf("%4d",&((first1->dateEntree).annee));
}
while((first1->dateEntree.annee <= 0 )|| (first1->dateEntree.annee > 9999));

printf("\n-salaire : ");
scanf("%f",&first1->salaire);
do
{
printf("\n-sexe(M/F) : ");
fflush(stdin);
gets(first1->sexe);
}
while((strcmp(first1->sexe,"F")!=0)&& (strcmp(first1->sexe,"M")!=0));
//fwrite(&first,sizeof(first),1,fp);
fprintf(fp, "%8d ",first1->matricule);
fprintf(fp, "%s ", first1->NomPrenom);
fprintf(fp, "%2d ", first1->dateEntree.jour);
fprintf(fp, "%2d ", first1->dateEntree.mois);
fprintf(fp, "%4d ", first1->dateEntree.annee);
fprintf(fp, "%f ", first1->salaire);
fprintf(fp, "%s \n", first1->sexe);
//first1=first->next;
first=first1;
printf("\n voulez-vous ajoutez un autre employe(O/N)\t");
fflush(stdin);
s=getchar();
}
while(s=='O');
}
fclose(fp);
Voici la modification rien ne marche
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "employe.h"
#include "Recherche.h"
int Modification(FILE*fp, int matr)
{ int test=0,exist=0,numero, trouve;;
char choix='o';
struct liste * first;
first=(struct liste *)malloc(sizeof(struct liste));

if (Recherche(first,matr)==1)
{
test =1;
fp = fopen("EMPLOYES.txt", "r");
/*modification du nom et prenom*/
do
{
printf("--> VOULER-VOUS MODIFIER LE NOM ET LE PRENOM ?(o/n)\n");
fflush(stdin);
choix=getchar();
}
while((choix!='o')&&(choix!='n'));
if(choix=='o')
{

trouve = 0;
while ((trouve==0) && (!feof(fp)))
{
numero++;

fscanf(fp, "%d %s %d %d %d %f %s", &first->matricule,first->NomPrenom,&first->dateEntree.jour,&first->dateEntree.mois,&first->dateEntree.annee,&first->salaire,first->sexe);
if (first->matricule==matr)
{
rewind(fp);
trouve = 1;
printf("\nAncien nom et prenom : %s", first->NomPrenom);
printf("\nNouveau : ");
fprintf(fp, "%s", first->NomPrenom);
//fseek(fp, (numero - 1L), 1);
// fprintf(fp, "%d %s %d %d %d %f %s\n", first->matricule,first->NomPrenom,first->dateEntree.jour,first->dateEntree.mois,first->dateEntree.annee,first->salaire,first->sexe);
printf("La modification est effectuee\n");
}
} //if (! trouve) printf("\nNom non repertorie.\n");
fclose(fp);}



}
return test;
}
La supression :(
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "employe.h"
#include "Recherche.h"
int Suppression(FILE*fp, int matr)
{ int test=0;
struct liste * first;
first=(struct liste *)malloc(sizeof(struct liste));
FILE * fp1;
if (Recherche(first,matr)==1)
{
test =1;
fp=fopen("EMPLOYES.txt","r");
fseek(fp,50,2);
while(!feof(fp))
{
fscanf(fp, "%8d", &first->matricule);
fscanf(fp, "%s", first->NomPrenom);
fscanf(fp, "%2d", &first->dateEntree.jour);
fscanf(fp, "%2d", &first->dateEntree.mois);
fscanf(fp, "%4d", &first->dateEntree.annee);
fscanf(fp, "%f", &first->salaire);
fscanf(fp, "%s", first->sexe);


if(first->matricule!=matr)
{
fp1=fopen("employes1.txt","w");
fprintf(fp1, "%8d ", first->matricule);
fprintf(fp1, "%s ", first->NomPrenom);
fprintf(fp1, "%2d ", first->dateEntree.jour);
fprintf(fp1, "%2d ", first->dateEntree.mois);
fprintf(fp1, "%4d ", first->dateEntree.annee);
fprintf(fp1, "%f ", first->salaire);
fprintf(fp1, "%s\n", first->sexe);
fseek(fp1,sizeof(struct liste),1);
fclose(fp1);
}

}
fclose(fp);

}

else test=0;
return test;
}
A voir également:

1 réponse

SypayV Messages postés 6583 Date d'inscription vendredi 28 décembre 2007 Statut Contributeur Dernière intervention 19 février 2023 449
Modifié par SypayV le 16/03/2015 à 14:47
Salut,

Ok. On se calme. Pas de panique. Et bienvenue sur CCM.

Il y a déjà une grosse question qui me vientt à l'esprit :
-> Si on on retire les éléments technique de programmation, que veux-tu faire ?

Donne la meilleure proposition sur pastebin.com et ensuite envoies-nous le lien de ta proposition.

Et ... Tu es obligé de me fournir les détails du fonctionnement de ton programme. Imagine que tu expliques le code à ta maman et dans ce cas je suis ta maman.
Musicalement,
SypayV.
0
asmabenslimene Messages postés 7 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 24 mars 2015
16 mars 2015 à 19:24
Salut ,
merci pour m'avoir répondre,merci bcp oui je suis nouvelle ds ce forum, bah vous avez raison maman mdr, je m'excuse !
je ss panique parceque je dépassé le deadline pour avoir l'envoyer a mes responsables.
en tt cs il s'agit de la gestion des employés , on nous demande de créer un fichier ou on met des informations sur chaque employés décrits par la structure que j'ai mis: matricule , nomprenom etc etc ! ainsi ajoutée , si on nous demande de modifier un certain champs , il suffit d'insérer la matricule , et modifier les coordonnées associées a cette matricule ! pour la suppression aussi , on saisit la matricule et on supprime cet employé!
int Modification (FILE *fp, int matr) » qui permet de modifier
n'importe quel champ, autre que le matricule, de l'employé ayant le matricule « matr »
dans le fichier « c:\VotreNom\EMPLOYES.TXT ». Cette fonction retourne 1 si la
modification est bien effectuée, et 0 si le matricule « matr » n'existe pas.
La fonction Modification fait appel à la fonction Recherche.
Remarque : on doit passer par la liste chainée et sauvegarder dans le fichier pointé
par fp. !
pour la modification , j'ai bien compris le principe, j'ouvre la fichier je vérifie apart si la matricule existe , en cas d'existance , je commence a chercher , dès que je la trouve j'affecte et rien ne se passe , ya une autre proposition que je fait si vous voulez je t'envoie mais qd mm sa marche plus !
0
SypayV Messages postés 6583 Date d'inscription vendredi 28 décembre 2007 Statut Contributeur Dernière intervention 19 février 2023 449 > asmabenslimene Messages postés 7 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 24 mars 2015
16 mars 2015 à 19:31
Je suis navré. Je ne saurait vous aider mieux que ça étant donné que vous êtes sur le fil.

Demander à votre employeur d'être formé à l'utilisation de base de données lié avec C serait une dernière chance.

Dans tous les cas je ne peux pas réaliser votre travail à votre place.
Il faut assumer les responsabilité qu'on ose prendre, et assumer quand on doit se former même si c'est déjà trop tard. C'est vrai qu'il faut se vendre, mais pas vendre du vent.
0
asmabenslimene Messages postés 7 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 24 mars 2015
16 mars 2015 à 21:47
oui biensur je sais ceci très bien , c pas un forum pour faire le travail a la place de qqun , et j'ai pas fait ça, , non j'ai pas demandé ça moi , juste j'ai pas trouvé le probleme dans mon programme , bon on tt cas merci , sa sera qd meme difficile pour vous de vérifier tou , c pas facile enfin , en tt cs je vais reessayé éspérant que la modification la suppression sera convenable , juste une question , lors de l'ajout est-ce-que je peut part exemple metre un pointeur next sur ma structure , qd je saisit les coordonnées du 1ere employé j'affecte poiteur1->NULL , puis le deuzieme employé , pointeur2-Next=pointeur1 est ce que dans ce cas l'ajout dans le fichier sera corretement introduite ?
0
asmabenslimene Messages postés 7 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 24 mars 2015
16 mars 2015 à 21:50
en tt cs merci SypayV, en fait c pas un travail , juste c un travail au sein de l'école d'ingénieur , mais en tt cs je te remercie , je vais envoyer mon travail mais je vais encore reessayer merci infiniment :)
0
asmabenslimene Messages postés 7 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 24 mars 2015
16 mars 2015 à 21:52
je m'excuse pour les erreurs orthographiques :/
j'ecris tout vite
0