Capítulo 10. Programación de entrada/salida
aleatoria
10.1. Objetivos
Practicar la entrada/salida aleatoria.
10.2. Documentación de las transparencias
Las transparencias relevantes para realizar esta práctica son:
- Página 33 de las transparencias de Bibliotecas de C y llamadas al sistema
10.3. Lectura aleatoria
El siguiente programa leepos.c imprime carácter de un punto arbitrario de un fichero, accediendo
aleatoriamente. El primer parámetro es el nombre del fichero y el segundo el número de octeto a
imprimir. El octeto se copia a la salida estándar y se imprime su valor en hexadecimal entre
paréntesis. Estúdielo y pruébelo.
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
static void error(char* mensaje) {
fprintf(stderr, "%s", mensaje); exit(1);
}
int main(int argc, char* argv[]) {
int f;
char c;
off_t pos;
if (argc != 3) error("Error en argumentos\n");
if ((f = open(argv[1], O_RDONLY)) < 0) error("Error en origen\n");
if (lseek(f, pos=atoi(argv[2]), SEEK_SET) < 0) error("Error en posicionamiento\n");
if(read(f, &c, 1) != 1) error("Error lectura\n");
printf("%s[%ld]= %c (%x hex)\n", argv[1], pos, c, c);
exit(0);
}
1
Capítulo 10. Programación de entrada/salida aleatoria
10.4. Escritura aleatoria
Modifique el programa anterior para que escriba un carácter en un punto arbitrario de un fichero,
accediendo aleatoriamente. El primer parámetro es el nombre del fichero, el segundo el número de
octeto a cambiar y el tercero el carácter a poner.
10.5. Ficheros ofrecidos
En el directorio es_aleat
• Programa leepos.c.
• Programa escpos.
10.6. Resultados pedidos
• Cree el programa modificado escpos.c y pruébelo.
2
Comentarios de: Capítulo 10. Programación de entrada/salida aleatoria (0)
No hay comentarios