Filtro 1 Si progetti, utilizzando il linguaggio C e le primitive di basso livello che operano sui file, un filtro filtro che accetta un parametro (C) che deve essere considerato un singolo carattere. Il filtro filtro deve riportare sullo standard output una selezione dello standard input: in particolare, in uscita devono essere riportati tutti i caratteri eliminando il carattere C a meno che non sia preceduto oppure seguito da un altro carattere C. Soluzione #include #include #include main(int argc, char **argv) { char c, oldc = '\0'; int b = 0; /* variabile booleana che serve per indicare se al giro precedente abbiamo scritto oldc e quindi dobbiamo scrivere c */ if (argc != 2) { puts("Errore nel numero di parametri"); exit(-1); } if (argv[1][1] != '\0') { puts("Errore il parametro non e' un singolo carattere"); exit(-2); } while (read(0, &c, 1)) { if (c == argv[1][0]) { if (oldc == argv[1][0]) { write(1, &oldc, 1); b = 1; } } else { if (b) { write(1, &oldc, 1); b = 0; } write(1, &c, 1); } oldc = c; } }