#include #include #include int main (int argc, char **argv) { int i, nr, n, fd, par = 0; char c, *op, *nomefile; if (argc > 3) { printf (" errore: Necessari 0, 1 od 2 argomenti\n"); exit (1); } else { switch (argc) { case 3: op = argv[1]; nomefile = argv[2]; par = 1; if (op[0] != '-') { printf ("errore: Necessaria l'opzione\n"); exit (2); } else n = atoi(&(op[1])); break; case 2: op = argv[1]; if (op[0] != '-') { nomefile = op; n = 10; /* valore di default di head */ par = 1; } else n = atoi (&(op[1])); break; case 1: n = 10; /* valore di default di head */ break; } } if (n==0) { printf (" errore: Il parametro opzione non è valido\n"); exit(2); } /* Ci e' stato passato un file da aprire? */ if (par == 1) { fd = open(nomefile, O_RDONLY); if (fd == -1) { printf("errore\n FILE NON ESISTE\n"); exit(3); } } else fd = 0; /* standard input */ i = 1; while ((nr = read (fd, &c, 1)) != 0) { if (c == '\n') i++; write(1, &c, 1); if (i > n) exit(0); } }