begin process at 2010 03 18 07:47:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Base de données

 > 

Autre

 > 

supprimer dans un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

supprimer dans un fichier

mercredi 20 août 2008 à 20:59:26 | supprimer dans un fichier

juju0612

donc voila mon programme fais une gestion d'un club de foot!!donc ici c pour supprimer des joueurs.
tout marche sauf que j'ai un probleme avec ma fonction supprimer
voila donc ma fonction doit demander quel nom doit etre supprimer et le trouver (sa sa marche)puis je demande si c la bonne personne et la si je tape O ou o le nom ainsi que toute ses infos doivent se supprimer(mais sa sa marche pas)

est ce que vous pouvez m'aider? merci d'avance de prendre quelque minute pour moi et mon programme.
voila ma fonction.

 void supression()
{

    titre();
  printf("\n suppression\n ");
  struct enreg fiche;
  struct tmp TMP;
  FILE *f;
  FILE *tp;
  char n[30],rep;
  printf("\nNom a supprimer :");
  fflush(stdin);
  gets(n);
  strlwr(n);
  f=fopen("joueurs.dat","r+b");
  tp=fopen("temp.dat","a+b");

   if(f!=NULL)
  { fread(&fiche,sizeof(fiche),1,f);
    { if(strcmpi(fiche.nom,n)==0)
  { printf("\nnom : %s",fiche.nom);
      printf("\nprenom : %s",fiche.prenom);
      printf("\nposte : %s",fiche.poste);
      printf("\nEst-ce la personne que vous cherchez ?");
      scanf(" %c",&rep);
      if(rep=='O'||rep=='o')
        while(!feof(f))
      {
          strcpy(TMP.categorie,fiche.categorie);
          strcpy(TMP.nom,fiche.nom);
          strcpy(TMP.prenom,fiche.prenom);
          strcpy(TMP.datenais,fiche.datenais);
          strcpy(TMP.pied,fiche.pied);
          strcpy(TMP.numero,fiche.numero);
          strcpy(TMP.rue,fiche.rue);
          strcpy(TMP.numeromaison,fiche.numeromaison);
          strcpy(TMP.codepostal,fiche.codepostal);
          strcpy(TMP.poste,fiche.poste);

          fwrite(&TMP,sizeof(TMP),1,tp);
       }
          fread(&fiche,sizeof(fiche),1,f);
       fseek(f,-1L*sizeof(fiche),SEEK_CUR);
       fwrite(&fiche,sizeof(fiche),1,f);
      } //fin de test si bonne personne

       }

 }
   fclose(f);
   fclose(tp);

  if(!feof(f))
  {
   remove("joueurs.dat");
   rename("temp.dat","joueurs.dat");
  }
 }

jeudi 21 août 2008 à 10:04:37 | Re : supprimer dans un fichier

fregolo52

Membre Club

Si ton code est complet, il est bizarre, tu n'as pas de boucle while pour rechercher la personne en question.

Ton 'if' suivi de 'while' sans accolade dans les 2 me parait dangeureux, assure le coup en mettant les accolades.

A la fin fread fseek et fwrite servent à quoi ? tu passes par un fichier temporaire, donc quel est l'intéret de modifier le fichier d'origine ?
jeudi 21 août 2008 à 11:26:43 | Re : supprimer dans un fichier

juju0612

donc voila merci de ton aide j'ai mis une boucle while j'ai mis les acolades et supprimer fseek et fxrite à l fin. mais cela donne le même resusltat.et stoppe apres le if O ||o   .Et je ne vois se qu'il cloque!. quand je tape sur O||o il arrete sa recherche de nom et jusqu'a la fin du fichier vas copier dans TMP .
qu'est ce qu'il ne va pas ?
merci encore fregolo52

void supression()
{

    titre();
  printf("\n suppression\n ");
  struct enreg fiche;
  struct tmp TMP;
  FILE *f;
  FILE *tp;
  int sw=0;
  char n[30],rep;
  printf("\nNom a supprimer :");
  fflush(stdin);
  gets(n);
  strlwr(n);
  f=fopen("joueurs.dat","r+b");
  tp=fopen("temp.dat","a+b");

  if (f==NULL)
    printf("le fichier n'existe pas");
  else
  { fread(&fiche,sizeof(fiche),1,f);
     while(!feof(f)&&(sw==0))
      { if(strcmpi(fiche.nom,n)==0)
   { printf("\nnom : %s",fiche.nom);
       printf("\nprenom : %s",fiche.prenom);
       printf("\nposte : %s",fiche.poste);
       printf("\nEst-ce la personne que vous cherchez ?");
       scanf(" %c",&rep);
       if(rep=='O'||rep=='o')
         {sw=1;
          while(!feof(f))
         {
            strcpy(TMP.categorie,fiche.categorie);
            strcpy(TMP.nom,fiche.nom);
            strcpy(TMP.prenom,fiche.prenom);
            strcpy(TMP.datenais,fiche.datenais);
            strcpy(TMP.pied,fiche.pied);
            strcpy(TMP.numero,fiche.numero);
            strcpy(TMP.rue,fiche.rue);
            strcpy(TMP.numeromaison,fiche.numeromaison);
            strcpy(TMP.codepostal,fiche.codepostal);
            strcpy(TMP.poste,fiche.poste);

            fwrite(&TMP,sizeof(TMP),1,tp);
            }
           fread(&fiche,sizeof(fiche),1,f);

       } //fin de test si bonne personne
      }
     }
  }
   fclose(f);
   fclose(tp);

  if(!feof(f))
  {
   remove("joueurs.dat");
   rename("temp.dat","joueurs.dat");
  }
 }

jeudi 21 août 2008 à 13:06:40 | Re : supprimer dans un fichier

fregolo52

Membre Club

ton "bug" c'est que si la réponse est 'O' ou 'o' tu écrits dans TMP, alors qu'il ne faut pas !!

Fait un fread juste apres sw=1; pour passer direct au suivant.

De plus dans ton code, tu supprimes toutes les personnes avant le nom à supprimer vu que tu sauvegardes dans TMP qu'a partir du nom recherché.


tu devrais faire :

- ouverture des 2 fichier
fread fichier source
while !feof

  test du nom
  si c'est pas celui qu'on veut
    écrire dans le fichier TMP les donnees
    fread source
  sinon (c'est la personne a supprimer)
    fread fichier source (pour passer tout de suite au suivant)
    tu fais ton while pour tout copier dans TMP
    break (pour sortir du while principal)
  fin si
fin while feof

jeudi 21 août 2008 à 14:56:40 | Re : supprimer dans un fichier

juju0612

lorsque tu dit

test du nom
  si c'est pas celui qu'on veut
    écrire dans le fichier TMP les donnees
    fread source


le test c le IF
je reponds non a la question
ecrire comment avec fwrite??
fread(&fiche,sizeof(fiche),1,f);


break (pour sortir du while principal)

le break je le fais comment un simple acolades suffit non?

merci encore
vendredi 22 août 2008 à 11:44:22 | Re : supprimer dans un fichier

juju0612

deso pour se UP mais là je galére


j'ai reflechie et je dois copier tout se qu'il y a devant le nom et apres le nom!!!

mais c sa que je sais pas faire!!

là je ne copie que se qui a apres seulement(et encore c bug apres la question)

merci a++
samedi 23 août 2008 à 11:24:20 | Re : supprimer dans un fichier

juju0612

bonjour!!
bon ben deso encore mais perso ne sais ressoudre mon probleme

je vois tout plein de personne passer mais personne ne poste.
et une reponse pourrai mettre trés utile.

SVP donc ma fonction supprimer doit demander un nom le trouver et puis copie tout sauf se nom

merci d'avance


Cette discussion est classée dans : supprimer, printf, fiche, tmp, strcpy


Répondre à ce message

Sujets en rapport avec ce message

fonction supprime tous!! [ par juju0612 ] bonjour à tous!!!voila ma fonction supprimer doit supprimer que le nom que je lui donne mais il supprime tous!!et je ne vois pas pourquoi!!comment res supprimer un variable [ par Nagalta ] Bonjour je suis débutant en c++J'ai visiblement un probleme de memory leak dans mon programme.visiblement cela vient du fait que je reatribut des vale Problème de code (tri et structure) [ par krolis ] Salut tout le monde, je rencontre un problème lors de l'exécution de ce code au niveau du tri par notes. Veuillez m'aidez s'il vous plaît. Merci d'ava Enregister un tableau de structures dans un fichier [ par krolis ] salut tout le monde. Je voudrais savoir comment faire pour enregistrer un tableau de structure dans un fichier. J'ai essayé mais ça marche pas. Veuill Liste chainéés [ par anek971 ] Bonjour a tousEnfaite il y a déà eu un poste sur le site sur ce sujet mais ayant le mm tp a faire je me suis rendu compte ke sa fonction quitter ne ma pkoi c amarche pas !!!!!!!!!!! [ par zebrahead ] j'ai un souci pkoi ca marche paaa,ouinnn, aider moi sivoupléééé,thanks a tous les mecs qui touchent tellement qui sauront trouver la finte,#include#de Assez Urgent problème de gestion dans les fichiers [ par bugs2600 ] Salut,Je suis en train de faire un programme de gestion de fichier mais j'ai un problème pour faire une fonction de suppression des menbres.Voici ce q besoin d'aide : liste chainée [ par SemBy ] salutjutilse une liste chainée pour pouvoir traité une structure.declaration de ma structure :struct etu{ char nom[25]; char prenom[25]; Problème de lecture fichier [ par nach73 ] J'ai un enorme probleme je n'arrive pas a lire dans mon fichierVoila la partie de mon programme.Si quelqu'un peux m'aide.Merci.//ouverture du fichier Liste chainée en C [ par Mo0d ] Bonjour, je suis étudiant en 1ère informatique de gestion et j'ai eu quelques problèmes à mon examen d'algorithmiques(que je vais devoir repasser bien


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales