begin process at 2012 02 11 20:44:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Supprimer une ligne (enregistrement) dans fichier


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

Supprimer une ligne (enregistrement) dans fichier

vendredi 13 mai 2005 à 11:40:05 | Supprimer une ligne (enregistrement) dans fichier

FOSTA

Bonjour,
j'ai un problème de suppression d'une ligne dans un fichier existant déjà(nous le créons plus).
j'ai essayé d'écrire les fonctions ci-dessous pour faire cette suppression mais ça ne marche pas.
Alors que faire?


void positionneCurs(FILE *f,long numl)
{
   char c;
   long cpterl=0;

     fseek(f,0,SEEK_SET);
     while((numl!=cpterl))
     {  c=fgetc(f);
 if(c=='\n')
  cpterl++;
     }
}

/* Cette fonction permet de supprimer une ligne(enregistrement) dans un fichier */
void supprimerEnreg(int numecrit)
{       FILE *f;
         int i=0,pos;
       
         f=fopen(nomfichier,"r+");
         positionneCurs(f,numecrit);
         fprintf(f," ");
         fclose(f);
}

vendredi 13 mai 2005 à 11:49:29 | Re : Supprimer une ligne (enregistrement) dans fichier

FOSTA

Bonjour,
je souhaite recupérer une champ et le comparé à une chaine saisie au clavier, pour cela j'ai écrit les fonctions ci-dessous mais elles ne marchent pas comme je souhaite.
Aidez-moi.
Merci déjà.

void positionneCurs(FILE *f,long numl)
{
   char c;
   long cpterl=0;

     fseek(f,0,SEEK_SET);
     while((numl!=cpterl))
     {  c=fgetc(f);
 if(c=='\n')
  cpterl++;
     }
}

char *lireligne(long numl)
{    FILE *f;
     char cdc[256];
     int nbc;

     nbc=nbcaract();
     f=fopen( nomfichier,"r+");
     positionneCurs(f,numl);
     fgets(cdc,nbc,f);
     fclose(f);
     return((char*) &cdc);
}
char *lirechamp(long posl,int posc)
{    char champ[25],tab[256];
     int i=0,virg=0,j=0;

     strcpy(tab,lireligne(posl));
     while(virg<(posc-1))
     {
 if(tab[i]==';')
 {
   virg=virg+1;
 }
 i++;
     }
     while(tab[i]!= ';')
     { champ[j]=tab[i];
 j++;i++;
     }
     return((char*) &champ);
}

/* Renvoie un r‚el recup‚r‚ dans le fichier */
float donneReel(char *pR)
{  char *pC;
   strcpy(pC,pR);
   return(atof(pC));
}
/* Renvoie un entier recup‚r‚ dans le fichier */
int donneEntier(char *pR)
{  char *pC;
   strcpy(pC,pR);
   return(atoi(pC));
}


void balanceG(char cptentre[12])
{
  FILE *fic;
  long int i=0,k;
  float solde,montantc=0,montantd=0,montantt=0;//,Tmontantc[20],Tmontantd[20];
  int d=0,c=0,j,existe=0;
  char lecomp[8],lecpte[8];

  k=cpterligne();
  //fseek(fic,0,SEEK_SET);
  fic=fopen(nomfichier,"r+");
  while(k!=i)
  {  strcpy(lecpte,lirechamp(i,4));
     /*for(j=0;j<8;j++)
 lecpte[j]=*(lirechamp(i,4)+j);*/
     printf("Nø compte: %s\n",lecpte);
     if((strcmpi(lecpte,cptentre))==0){//si compte saisi=compte fichier
  existe=1;
  if(donneEntier(lirechamp(i,5))==-1){//si le sens=-1 (Cr‚dit)
      montantc=(montantc+donneReel(lirechamp(i,8)));//affectation du montant
      //Tmontantc[c]=atol(lirechamp(fic,i,8));
      c++;
  }
  if(donneEntier(lirechamp(i,5))==1){//si le sens=-1 (D‚bit)
      montantd=(montantd+donneReel(lirechamp(i,8)));
      //Tmontantd[d]=atol(lirechamp(fic,i,8));
      d++;
  }
     }
     i++;
  }
  solde=montantd-montantc;
  if(existe==1){
     clrscr();
     gotoxy(25,5);
     printf("B A L A N C E   G E N E R A L E");
     gotoxy(2,10);
     printf("Compte");
     gotoxy(2,14);
     printf("%s",cptentre);
     gotoxy(15,10);
     printf("D‚bit");
     gotoxy(15,14);
     printf("%.0f",montantd*100);
     gotoxy(34,10);
     printf("Cr‚dit");
     gotoxy(34,14);
     printf("%.0f",montantc*100);
     gotoxy(56,10);
     printf("Solde");
     gotoxy(56,14);
     if(solde<0)
     printf("%.0f",-solde*100);
     else
     printf("%.0f",solde*100);
     gotoxy(70,14);
     if(solde<0)
 printf("(Cr‚diteur)");
     if(solde>0)
 printf("(D‚biteur)");
     if(solde==0)
 printf("(Nulle)");
  }
  else
     printf("Ce compte n'existe pas.");
  fclose(fic);
}
/* Cette fonction permet de compter le nombre lignes(enregistrements) dans
   un fichier */
int cpterligne()
{
 FILE *f;
 int cpterl=0;
 char c;
     f=fopen(nomfichier,"r");
     //fseek(f,0,SEEK_SET);
     while((c=fgetc(f))!=EOF)
     {
 if(c=='\n')
  cpterl++;
     }
     fclose(f);
     return cpterl;
}

vendredi 13 mai 2005 à 11:56:38 | Recupération et Comparaison de 2 chaines

FOSTA

Bonjour,
je souhaite recupérer une champ et le comparé à une chaine saisie au clavier, pour cela j'ai écrit les fonctions ci-dessous mais elles ne marchent pas comme je souhaite.
Aidez-moi.
Merci déjà.

void positionneCurs(FILE *f,long numl)
{
   char c;
   long cpterl=0;

     fseek(f,0,SEEK_SET);
     while((numl!=cpterl))
     {  c=fgetc(f);
 if(c=='\n')
  cpterl++;
     }
}

char *lireligne(long numl)
{    FILE *f;
     char cdc[256];
     int nbc;

     nbc=nbcaract();
     f=fopen( nomfichier,"r+");
     positionneCurs(f,numl);
     fgets(cdc,nbc,f);
     fclose(f);
     return((char*) &cdc);
}
char *lirechamp(long posl,int posc)
{    char champ[25],tab[256];
     int i=0,virg=0,j=0;

     strcpy(tab,lireligne(posl));
     while(virg<(posc-1))
     {
 if(tab[i]==';')
 {
   virg=virg+1;
 }
 i++;
     }
     while(tab[i]!= ';')
     { champ[j]=tab[i];
 j++;i++;
     }
     return((char*) &champ);
}

/* Renvoie un r‚el recup‚r‚ dans le fichier */
float donneReel(char *pR)
{  char *pC;
   strcpy(pC,pR);
   return(atof(pC));
}
/* Renvoie un entier recup‚r‚ dans le fichier */
int donneEntier(char *pR)
{  char *pC;
   strcpy(pC,pR);
   return(atoi(pC));
}


void balanceG(char cptentre[12])
{
  FILE *fic;
  long int i=0,k;
  float solde,montantc=0,montantd=0,montantt=0;//,Tmontantc[20],Tmontantd[20];
  int d=0,c=0,j,existe=0;
  char lecomp[8],lecpte[8];

  k=cpterligne();
  //fseek(fic,0,SEEK_SET);
  fic=fopen(nomfichier,"r+");
  while(k!=i)
  {  strcpy(lecpte,lirechamp(i,4));
     /*for(j=0;j<8;j++)
 lecpte[j]=*(lirechamp(i,4)+j);*/
     printf("Nø compte: %s\n",lecpte);
     if((strcmpi(lecpte,cptentre))==0){//si compte saisi=compte fichier
  existe=1;
  if(donneEntier(lirechamp(i,5))==-1){//si le sens=-1 (Cr‚dit)
      montantc=(montantc+donneReel(lirechamp(i,8)));//affectation du montant
      //Tmontantc[c]=atol(lirechamp(fic,i,8));
      c++;
  }
  if(donneEntier(lirechamp(i,5))==1){//si le sens=-1 (D‚bit)
      montantd=(montantd+donneReel(lirechamp(i,8)));
      //Tmontantd[d]=atol(lirechamp(fic,i,8));
      d++;
  }
     }
     i++;
  }
  solde=montantd-montantc;
  if(existe==1){
     clrscr();
     gotoxy(25,5);
     printf("B A L A N C E   G E N E R A L E");
     gotoxy(2,10);
     printf("Compte");
     gotoxy(2,14);
     printf("%s",cptentre);
     gotoxy(15,10);
     printf("D‚bit");
     gotoxy(15,14);
     printf("%.0f",montantd*100);
     gotoxy(34,10);
     printf("Cr‚dit");
     gotoxy(34,14);
     printf("%.0f",montantc*100);
     gotoxy(56,10);
     printf("Solde");
     gotoxy(56,14);
     if(solde<0)
     printf("%.0f",-solde*100);
     else
     printf("%.0f",solde*100);
     gotoxy(70,14);
     if(solde<0)
 printf("(Cr‚diteur)");
     if(solde>0)
 printf("(D‚biteur)");
     if(solde==0)
 printf("(Nulle)");
  }
  else
     printf("Ce compte n'existe pas.");
  fclose(fic);
}
/* Cette fonction permet de compter le nombre lignes(enregistrements) dans
   un fichier */
int cpterligne()
{
 FILE *f;
 int cpterl=0;
 char c;
     f=fopen(nomfichier,"r");
     //fseek(f,0,SEEK_SET);
     while((c=fgetc(f))!=EOF)
     {
 if(c=='\n')
  cpterl++;
     }
     fclose(f);
     return cpterl;
}



Cette discussion est classée dans : fichier, ligne, enregistrement, supprimer, cpterl


Répondre à ce message

Sujets en rapport avec ce message

C : Supprimer une ligne d'un fichier [ par liloulola ] Bonjour, ca y est, j'arrive à stocker mes structures dans un fichier !En fait, je stocke plusieurs enregistrements du type %s%s%s/nJe souhaiterais pou supprimer enregistrement fichier en c [ par mazo0012 ] bonjour, j'aimerai savori comment supprimer l'enregistrement d'un fichier en langage c, si quelqu'un pouvait m'aider, je l'en remercierait.@+++mika Supprimer une ligne dans un fichier [ par PunkDude424 ] Je voudrais savoir comment faire pour supprimer une ligne dans un fichier texte ?? Est-ce qu'il existe une commande pour supprimer une ligne dans un f Supprimer la dernière ligne d'un fichier... [ par Clonk ] Bonjour,je voudrais pouvoir supprimer la dernière ligne d'un fichier le plus rapidement possible...En fait, j'ajoute une ligne dans un fichier pendant Supprimer enregistrement dans fichier en c [ par bandzai87 ] Voilà je souhaite supprimer, un enregistrement  dans un fichier de structure. En accès direct, pas en utilisant 2 fichiers par contre j'utilise que le supprimer une ligne contenu dans un fichier txt [ par cobra176 ] bonjour a tousje recherche un code permettant de retirer une ligne contenu dans un fichierj'ai vu qu'il existé déja des codes permettant cela mais j'a aide traitement du fichier [ par boualiasma ] J'ai un fichier qui se compose de deux champs : - numero présenté par un entier - attribut présenté par une chaine caractère. On a la même taille po fichier texte et enregistrement [ par brell ] bon jour! comment je fait pour enregistrer un texte, entrer par le clavier et fini par un caractere spéciale,ligne par ligne dans fichier texte en lan à l'aide pour fusioné la fonction getline + fct strtok [ par yanlou ] salut,voici mon problmé, je veux lire un fichier txt, je le fais avec la fonction getline. voici le code :#include #include #include int main(){    Lecture fichier .config [ par wislam2007 ] Salut j ai un fichier .config contient une seul ligne, j'utilise visual c++ 6, comment puis-je faire pour lire ma 1ere ligne? A vs[^^sad1]


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 2,231 sec (3)

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