Hola a todos, bueno mi problema es el siguiente y es que al ingresar N variables al mostrar el listado me sale infinitas veces como si al valor N lo tomase como otro numero y no se a que se debe el problema si ya aplique el rewind y el fread.
como siempre espero su ayuda, Saludos!.
Código (c) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef char cadena [50];
struct registro
{
int numcount;
cadena type;
float saldo;
};
void charge(int n, registro reg, FILE*archi)
{
int com1, com2, com3, com4, com5, com6, com7, com8;
cadena cad1 = "c";
cadena cad2 = "C";
cadena cad3 = "a";
cadena cad4 = "A";
cadena cad5 = "t";
cadena cad6 = "T";
cadena cad7 = "s";
cadena cad8 = "S";
for(int i=0; i<n ;i++)
{
printf("\n**REGISTRO NRO: %d**",i+1);
printf("\nIngrese NRO de cuenta: "); scanf("%d",®.numcount);
printf("\nIngrese TIPO de cuenta: "); _flushall();gets(reg.type);
printf("\nIngrese saldo previo: "); scanf("%f",®.saldo);
com1 = strcmp(reg.type,cad1);
com2 = strcmp(reg.type,cad2);
com3 = strcmp(reg.type,cad3);
com4 = strcmp(reg.type,cad4);
com5 = strcmp(reg.type,cad5);
com6 = strcmp(reg.type,cad6);
com7 = strcmp(reg.type,cad7);
com8 = strcmp(reg.type,cad8);
if (com1 == 0 || com2 == 0)
{
printf("\nCUENTA CORRIENTE");
}
if (com3 == 0 || com4 == 0)
{
printf("\nCAJA DE AHORRO");
}
if (com5 == 0 || com6 == 0)
{
printf("\nPLAZO FIJO 30 DIAS");
}
if (com7 == 0 || com8 == 0)
{
printf("\nPLAZO FIJO 60 DIAS");
}
fwrite(®,sizeof(reg),1,archi);
}//for
}
void show(int n, registro reg, FILE *archi, float &ns)
{
int com1, com2, com3, com4, com5, com6, com7, com8;
cadena cad1 = "c";
cadena cad2 = "C";
cadena cad3 = "a";
cadena cad4 = "A";
cadena cad5 = "t";
cadena cad6 = "T";
cadena cad7 = "s";
cadena cad8 = "S";
system ("cls");
printf("\nSE MOSTRARA LA LISTA DE LOS DATOS\n");
system ("pause");
rewind(archi);
fread(®, sizeof(reg),1,archi);
while (!feof(archi))
{
printf("\nNRO DE CUENTA: %d", reg.numcount);
printf("\nTIPO: ");puts(reg.type);
com1 = strcmp(reg.type,cad1);
com2 = strcmp(reg.type,cad2);
com3 = strcmp(reg.type,cad3);
com4 = strcmp(reg.type,cad4);
com5 = strcmp(reg.type,cad5);
com6 = strcmp(reg.type,cad6);
com7 = strcmp(reg.type,cad7);
com8 = strcmp(reg.type,cad8);
if (com1 == 0 || com2 == 0)
{
ns = reg.saldo;
printf("\nSaldo actual: %.2f", ns);
}
else
{
if (com3 == 0 || com4 == 0)
{
ns = reg.saldo + (reg.saldo*0.03);
printf("\nSaldo actual: %.2f", ns);
}
else
{
if (com5 == 0 || com6 == 0)
{
ns = reg.saldo + (reg.saldo*0.05);
printf("\nSaldo actual: %.2f", ns);
}
else
{
if (com7 == 0 || com8 == 0)
{
ns = reg.saldo + (reg.saldo*0.09);
printf("\nSaldo actual: %.2f", ns);
}
}
}
}
fread(®,sizeof(reg),1,archi);
}
}
main()
{
FILE *archi;
int n;
registro reg;
float ns = 0.0;
archi = fopen("account.dat", "w+b");
if(archi = NULL)
{
printf("\nLo sentimos, el archivo no existe");
system ("PAUSE");
exit(1);
}
printf ("\nIngrese la N cantidad de archivos ");scanf("%d", &n);
charge(n,reg,archi);
show(n,reg,archi,ns);
fclose(archi);
}
como siempre espero su ayuda, Saludos!.