› Foros › PC › Software libre
void Actualizar_Devolucion (int id_prestamo ) {
Fecha fecha;
FILE *FP;
reg_prestamo rp;
int encontrado=0;
/* Genera la fecha de hoy y la almacena en el argumento fecha */
genera_fecha(fecha);
if((FP=fopen("prestamos.dat", "ab+"))==NULL) exit(0);
while(!encontrado && fread(&rp, sizeof(rp), 1, FP))
if(rp.id_prestamo==id_prestamo)
encontrado=1;
if (encontrado==1){
strcpy(rp.fecha_devolucion,fecha);
fwrite(&rp, sizeof(rp), 1, FP);
}
fclose(FP);
}
Opening a file with append mode ('a' as the first character in the mode argument)
causes all subsequent writes to the file to be forced to the then current end-of-file,
regardless of intervening calls to the fseek function. In some implementations, opening
a binary file with append mode ('b' as the second or third character in the above list of
mode argument values) may initially position the file position indicator for the stream
beyond the last data written, because of null character padding.
typedef struct {
int edad;
char nombre[20];
} t_ficha;
int main(){
t_ficha persona;
FILE *prueba;
int i;
if((prueba=fopen("prueba.dat", "wb"))==NULL)
printf("\nError al abrir el archivo");
/** Introducir los datos en el archivo. */
for(i=0; i<3; i++){
printf("\nDame el nombre: ");
gets(persona.nombre);
fflush(stdin);
printf("\nDame la edad: ");
scanf("%d", &persona.edad);
fflush(stdin);
fwrite(&persona, sizeof(persona), 1, prueba);
}
fclose(prueba);
/* Actualizacion de los datos */
if((prueba=fopen("prueba.dat", "rb+"))==NULL)
printf("\nError al abrir el archivo");
fread(&persona, sizeof(persona), 1, prueba);
while(feof(prueba)==0){
if(strcmp(persona.nombre, "Javi")==0){
persona.edad=99;
printf("\nEntro por la condicion");
fwrite(&persona, sizeof(persona), 1, prueba);
}
fread(&persona, sizeof(persona), 1, prueba);
}
fclose(prueba);
/* Lectura de los nuevos datos */
if((prueba=fopen("prueba.dat", "rb"))==NULL)
printf("\nError al abrir el archivo");
fread(&persona, sizeof(persona), 1, prueba);
while(feof(prueba)==0){
if(strcmp(persona.nombre, "Javi")==0){
printf("La nueva edad es: %d", persona.edad);
}
fread(&persona, sizeof(persona), 1, prueba);
}
fclose(prueba);
return 0;
}