Diferencia entre revisiones de «Curso de Programación en C/Prog116»
Ir a la navegación
Ir a la búsqueda
(Sin diferencias)
|
Revisión actual del 17:42 27 sep 2012
Prog116
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define TAMANOAR 1000
5
6 int main( void )
7 {
8 double Numeros[TAMANOAR],
9 Valor;
10
11 const char * Archivo = "Numeros.dat";
12
13 int i;
14
15 long pos;
16
17 FILE *ioArchivo;
18
19 // Crear un grupo de valores de dobles
20 for( i = 0; i < TAMANOAR; i++ )
21 Numeros[i] = 100.0 * i + 1.0 / (i + 1);
22
23 if( ( ioArchivo = fopen( Archivo, "wb" ) ) == NULL )
24 {
25 fprintf( stderr, "No puedo abrir el archivo de salida: %s.\n", Archivo );
26 exit(1);
27 }
28 // write array in binary format to Archivo
29 fwrite( Numeros, sizeof (double), TAMANOAR, ioArchivo );
30 fclose( ioArchivo );
31
32 if( ( ioArchivo = fopen( Archivo, "rb" ) ) == NULL )
33 {
34 fprintf( stderr, "No puedo abrir %s para acceso random.\n", Archivo );
35 exit( 1 );
36 }
37 // read selected items from Archivo
38 printf( "Ingresa un index en el rango 0-%d: ", TAMANOAR - 1 );
39 scanf( "%d", &i );
40 while( i >= 0 && i < TAMANOAR )
41 {
42 pos = (long)i * sizeof( double ); // calcular el offset
43 fseek( ioArchivo, pos, SEEK_SET );
44 fread( &Valor, sizeof( double ), 1, ioArchivo );
45 printf( "El Valor allá es %f.\n", Valor );
46 printf( "Siguiente index (a fuera del rango para terminar): ");
47 scanf( "%d", &i );
48 }
49 fclose( ioArchivo );
50 puts( "\n¡Adios!\n" );
51 return 0;
52 }
Resultado
[rrc@llawyr CClase]$ gcc -Wall -o Prog116 Prog116.c [rrc@llawyr CClase]$ ./Prog116 Ingresa un index en el rango 0-999: 40 El Valor allá es 4000.024390. Siguiente index (a fuera del rango para terminar): 21 El Valor allá es 2100.045455. Siguiente index (a fuera del rango para terminar): 66 El Valor allá es 6600.014925. Siguiente index (a fuera del rango para terminar): 99 El Valor allá es 9900.010000. Siguiente index (a fuera del rango para terminar): 345 El Valor allá es 34500.002890. Siguiente index (a fuera del rango para terminar): 999 El Valor allá es 99900.001000. Siguiente index (a fuera del rango para terminar): 2345 ¡Adios! [rrc@llawyr CClase]$