cs_FOSTA
Messages postés7Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention27 novembre 2007
-
13 mai 2005 à 11:40
cs_FOSTA
Messages postés7Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention27 novembre 2007
-
13 mai 2005 à 11:56
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;
cs_FOSTA
Messages postés7Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention27 novembre 2007 13 mai 2005 à 11:49
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;
/* Renvoie un rel recupr dans le fichier */
float donneReel(char *pR)
{ char *pC;
strcpy(pC,pR);
return(atof(pC));
}
/* Renvoie un entier recupr 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 (Crdit)
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 (Dbit)
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("Dbit");
gotoxy(15,14);
printf("%.0f",montantd*100);
gotoxy(34,10);
printf("Crdit");
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("(Crditeur)");
if(solde>0)
printf("(Dbiteur)");
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;
}
cs_FOSTA
Messages postés7Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention27 novembre 2007 13 mai 2005 à 11:56
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;
/* Renvoie un rel recupr dans le fichier */
float donneReel(char *pR)
{ char *pC;
strcpy(pC,pR);
return(atof(pC));
}
/* Renvoie un entier recupr 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 (Crdit)
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 (Dbit)
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("Dbit");
gotoxy(15,14);
printf("%.0f",montantd*100);
gotoxy(34,10);
printf("Crdit");
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("(Crditeur)");
if(solde>0)
printf("(Dbiteur)");
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;
}