#pragma hdrstop #include <condefs.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> //------------------------------------------------------------------#pragma argsused struct articulo { int codigo; char nombre[41]; double precio; int existencia; }; void entrardatos(); void buscardatos(); void listardatos(); main() { int n; do { clrscr(); printf("1. Ingreso de datos\n2. Buscar un dato\n3. " "Listar\nOtro salir\n"); scanf( "%d", &n ); getchar(); switch( n ) { case 1: entrardatos(); break; case 2: buscardatos(); break; case 3: listardatos(); break; } }while(n > 0 && n < 4); system("pause"); } void entrardatos() { FILE * f; int n; struct articulo art; f = fopen( "articulos.dat", "a+b" ); if( f != NULL ) { do { clrscr(); printf( "Entre Codigo " ); scanf ("%d", &art.codigo ); getchar(); printf( "Nombre " ); gets( art.nombre ); printf( "Precio " ); scanf( "%lf", &art.precio ); printf( "Existencia " ); scanf("%d", & art.existencia ); printf( "\n1. Guarda Otra corrige " ); scanf("%d", &n ); if( n == 1 ) { fwrite(&art, sizeof(articulo), 1, f ); } printf("1. Finalizar Otra sigue entrando datos " ); scanf }while( n != 1 ); fclose( f ); } } void buscardatos() { FILE * f; struct articulo art; int n, registros; f = fopen( "articulos.dat", "a+b" ); if( f != NULL { fseek( f, registros registros ) 0, SEEK_END ); = ftell( f ); /= sizeof(struct articulo ); do { clrscr(); printf( "Lugar a buscar entre %d registros ", registros ) getchar(); }while( !(n > 0 && n <= registros) ); n = n-1; fseek( f, n*sizeof(struct articulo), SEEK_SET ); fread( &art, sizeof( struct articulo ), 1, f ); printf( "\nCodigo %d\n", art.codigo ); printf( "Nombre %s\n", art.nombre ); printf( "Precio %lf\n", art.precio ); printf( "Existencia %d\n\n", art.existencia ); printf( "Presione una tecla para continuar\n" ); getchar(); fclose( f ); } } void listardatos() { FILE * f; struct articulo art; f = fopen("articulos.dat", "rb" ); if( f != NULL ) { clrscr(); while( !feof(f) ) { fread( &art, sizeof(struct articulo), 1, f ); printf( "%d\t\t", art.codigo ); printf( "%s\t\t", art.nombre ); printf( "%6.2lf\n", art.precio ); } fclose(f); printf("\nPresione una tecla" ); getchar(); } }