Fondamenti di Informatica - Esame Scritto del 18 Luglio 1997 Esercizio 2 Si progetti utilizzando il linguaggio C e le funzioni primitive che operano sui file un filtro filtro che accetta un numero variabile di parametri (maggiore o uguale ad 1) che corrispondono a nomi relativi di file f1,...., fn. Il filtro deve riportare sullo standard output alternatamente un carattere di f1, un carattere di f2, ..., un carattere di fn, e poi di nuovo un carattere di f1, un carattere di f2, fino alla terminazione di tutti i file. Inoltre, utilizzando il Bourne Shell di UNIX, si progetti un algoritmo che preveda un numero variabile di parametri (maggiore o uguale a 3): il primo parametro deve essere il nome assoluto di un direttorio, il secondo un nome relativo di direttorio, mentre i successivi devono essere singoli caratteri (C1, ..., Ck). Il programma deve cercare nella gerarchia specificata dal primo parametro tutti i direttori il cui nome relativo corrisponde al secondo parametro: si riporti il nome assoluto di tali direttori sullo standard output. In ognuno dei direttori trovati, si devono identificare tutti i file il cui nome inizi con uno dei caratteri dati come parametri (C1, ..., Ck): si riporti il nome assoluto di tali file sullo standard output. Quindi, per ognuno dei direttori trovati, si applichi il filtro filtro che accetta come parametri i nomi di tutti i file identificati. /* Filtro 18 Luglio 1997 */ #include #include main(argc,argv) int argc;char **argv; {int *fd, i, finiti=0; char car; if (argc<2) {puts("Errore parametri"); exit(-1); } fd = (int*)malloc(argc*sizeof(int)); for (i=0;i 0) if (read(fd[i],&car,1)>0) write(1,&car,1); else { fd[i] = -1; finiti++; } } } for (i=0;i> /tmp/temp fi done done if test -f /tmp/temp then filtro `cat /tmp/temp` rm /tmp/temp fi fi cercadir $* cd .. fi done