Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2013, 19:08
Garibay1
 
Fecha de Ingreso: diciembre-2012
Ubicación: Guadalajara
Mensajes: 14
Antigüedad: 12 años
Puntos: 1
Pregunta Editar usuarios :.

Saludos!

Tengo una pequeña complicación con un programa en "C".

Es un registro de usuarios, agrega información, los busca, etc...

El problema es que al editar un dato, al volver a hacer la consulta, se borra la información del registro excepto lo modificado.

Les dejo el código, mi problema es con "editar usuario" y que no se borre lo que NO se quiera modificar.


Ayuda, no se que hacer, al parecer se sobrescriben los datos...


Fragmento de código:
Cita:

void Modificar (FILE *clientzz) ///////////////////////////////////////// Modificar registro :.
{
int codigoBuscado;
int encontrado = 0;
int opcion;

FILE *clientzzx;

textcolor(LIGHTGREEN); gotoxy(3,5); cprintf("REG Modificar: ");
scanf("%d", &codigoBuscado);


textcolor(GREEN); gotoxy(60,5); cprintf("1.");
textcolor(WHITE); gotoxy(63,5); cprintf("Representante");

textcolor(GREEN); gotoxy(60,6); cprintf("2.");
textcolor(WHITE); gotoxy(63,6); cprintf("RFC");

textcolor(GREEN); gotoxy(60,7); cprintf("3.");
textcolor(WHITE); gotoxy(63,7); cprintf("Empresa");

textcolor(GREEN); gotoxy(60,8); cprintf("4.");
textcolor(WHITE); gotoxy(63,8); cprintf("Fecha Alta");

textcolor(GREEN); gotoxy(60,9); cprintf("5.");
textcolor(WHITE); gotoxy(63,9); cprintf("Servicio");

textcolor(GREEN); gotoxy(60,11); cprintf("6.");
textcolor(WHITE); gotoxy(63,11); cprintf("Total");

textcolor(GREEN); gotoxy(60,12); cprintf("7.");
textcolor(WHITE); gotoxy(63,12); cprintf("Cant. Recibida");

textcolor(LIGHTRED); gotoxy(60,14); cprintf("0.");
textcolor(WHITE); gotoxy(63,14); cprintf("Cancelar");


if ((clientzz = fopen("clientzz", "r")) == NULL)
{
printf ( "No existe registro" );
}
else
{
fread (&registro, sizeof(struct sRegistro), 1, clientzz);

while (!feof(clientzz) && (encontrado != 1))
{
if (codigoBuscado == registro.codigo)
encontrado = 1;
fread (&registro, sizeof(struct sRegistro), 1, clientzz);
}
}

fclose (clientzz);

if (encontrado == 0)
{
getchar();
sleep(1);
gotoxy(5,17); textcolor(LIGHTRED); cprintf("Registro no encontrado");
return;
}


if (encontrado == 1)
{
newregistro.newcodigo = codigoBuscado;


gotoxy(60,19);
printf("Opcion: ");
scanf("%d", &opcion);

switch(opcion)
{
case 1:
fflush(stdin);
textcolor(LIGHTGREEN); gotoxy(3,7); cprintf("Representante: ");
gets(newregistro.newNombre);
break;
case 2:
fflush(stdin);
textcolor(LIGHTGREEN); gotoxy(3,8); cprintf("RFC: ");
gets(newregistro.newRFC);
break;
case 3:
fflush(stdin);
textcolor(LIGHTGREEN); gotoxy(3,10); cprintf("Empresa: ");
gets(newregistro.newEmpresa);
break;
case 4:
fflush(stdin);
textcolor(LIGHTGREEN); gotoxy(3,11); cprintf("Fecha Alta: ");
gets(newregistro.newFecha);
break;
case 5:
fflush(stdin);
textcolor(LIGHTGREEN); gotoxy(3,13); cprintf("Servicio: ");
gets(newregistro.newServicio);
break;
case 6:
textcolor(LIGHTGREEN); gotoxy(3,13); cprintf("Total: ");
printf("$ "); scanf("%d", &newregistro.newCtotal);
break;
case 7:
textcolor(LIGHTGREEN); gotoxy(3,13); cprintf("Cant. Recibida: ");
printf("$ "); scanf("%d", &newregistro.newCrecibida);
break;
}

if ((clientzz = fopen("clientzz", "r")) == NULL)
printf ( "No existen registros" );
else
if ((clientzzx = fopen("clientzzx", "w")) == NULL)
printf ( "No existen registros" );
else
{
fread (&registro, sizeof(struct sRegistro), 1, clientzz);
while (!feof(clientzz))
{
if (newregistro.newcodigo == registro.codigo)
fwrite(&newregistro, sizeof(struct sRegistro), 1, clientzzx);
else
fwrite(&registro, sizeof(struct sRegistro), 1, clientzzx);
fread (&registro, sizeof(struct sRegistro), 1, clientzz);
}
fclose (clientzz);
fclose (clientzzx);

remove("clientzz");
rename("clientzzx", "clientzz");

sleep(1);
gotoxy(5,17); textcolor(YELLOW); cprintf("Registro modificado");
gotoxy(55,19); textcolor (RED); cprintf("Click para continuar");
getchar();
}
}
return;
}












El código es un poco largo, por lo que no puedo pegarlo... Dejo un enlace adjunto.
http://laboratoriosandoval.com/REG_Codigo.c

Última edición por Garibay1; 30/04/2013 a las 22:57