ENUNCIADO

Esta es una práctica que no hay que entregar. El programa admitirá el nombre de un fichero como argumento. Abrirá el fichero, si puede, e irá imprimiendo por la salida estándar dicho fichero cambiando todas las 'a' por 'o'. Haced una comprobación no paranoica de errores (basta con usar bien perror). Solamente usad llamadas al sistema (no usar printf ni fopen) en la parte principal de la práctica.

COMENTARIOS

La práctica con 0.25 es la de Ignis e Hyems:
#define _HPUX_SOURCE

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
   int fd,tam,i;
   char buffer[1024];

   if(argc!=2)
   {
      fprintf(stderr,"Uso:%s \n", argv[0]);
      return 1;
   }

   fd=open(argv[1],O_RDWR); /* Bastaría con especificar O_RDONLY */
   if(fd==-1)
   {
      perror("susti.c:open");
      return 1;
   }

/*Algoritmo de sustitucion*/
   do
   {
      tam=read(fd,buffer,1024);
      if(tam==-1)
      {
         perror("susti.c:read");
         return 1;
      }
      for (i=0;i<tam;i++)
         if(buffer[i]=='a') buffer[i]='o';

      write(1,buffer,tam); /* Falta comprobar los errores del write */
   } while(tam!=0);
       
   close(fd);
   return 0; 
}   
Fijaros sobre todo cuáles son los parámetros del read y del write. Así sabréis también cómo se sabe cuándo se ha alcanzado el final del fichero...

MENCIONES ESPECIALES

LPEs


© 2000 Guillermo González Talaván.