Sei sulla pagina 1di 6

Corso di Fondamenti di Informatica

Ingegneria delle Comunicazioni – BCOR


Ingegneria Elettronica – BELR

Introduzione al C
Esercitazione 6

Claudio Ciccotelli
Esercizio 1
Realizzare un programma mygrep che presi in ingresso
(come argomenti del programma) una parola e il percorso
di un file, stampi a video tutte (e sole) le linee del file che
contengono la parola.
Si assuma, per semplicità, che nessuna linea di file sia più
lunga di 999 caratteri.
Es.:
./mygrep.exe hello file.txt
(stampa tutte le linee di file.txt che contengono la parola "hello" )

Esercitazione 6 2014/2015 Pagina 2


Esercizio 2
Realizzare un programma mycat che presi in
ingresso (come argomenti del programma) un
numero qualsiasi di percorsi di file, stampi a
video il contenuto di ciascun file (nell'ordine in
cui i percorsi sono stati passati).

Si veda la slide successiva per un esempio…

Esercitazione 6 2014/2015 Pagina 3


Esercizio 2 - Esempio
file1.txt file2.txt file3.txt
I was middle of track
caught a railroad
In the

./mycat.exe file1.txt file2.txt file3.txt

Deve stampare:
I was
caught
In the
middle of
a railroad
track

Esercitazione 6 2014/2015 Pagina 4


Esercizio 3
/* 1*/ #include<stdio.h> 1. Il ciclo a riga 4 esegue
/* 2*/ void main() { 2 iterazioni
/* 3*/ int x = 3, y = 0, *z, **w;
2. La riga 6 stampa 1
/* 4*/ while (--x != y++)
/* 5*/ printf("iterazione\n"); 3. La riga 7 stampa 1
/* 6*/ printf("%d\n", x); 4. La riga 10 stampa il
/* 7*/ printf("%d\n", y); valore di x
/* 8*/ z = &x; w = &z; 5. La riga 11 stampa
/* 9*/ *w = &y; l'indirizzo di w
/*10*/ printf("%d\n", *z); 6. La riga 12 stampa il
/*11*/ printf("%p\n", *w); valore di y
/*12*/ printf("%d\n", **w);
7. il programma non
/*13*/ while (--y + 1); termina mai
/*14*/ }

Esercitazione 6 2014/2015 Pagina 5


Esercizio 4
/* 1*/ #include<stdio.h>
1. La riga 8 stampa 9
/* 2*/ #include<string.h>
/* 3*/ void main() { 2. La riga 11 stampa
/* 4*/ char s[20] = "esercizio"; "esercizione"
/* 5*/ char w[80] = "equitazione";
/* 6*/ char *p = s+3; 3. La riga 14 stampa
/* 7*/ *(++p+2) = '\0'; "equa"
/* 8*/ printf("%d\n", strlen(s));
/* 9*/ p = w+2;
4. La riga 15 stampa 5
/*10*/ strcat(s, p+2); 5. La riga 16 stampa 2
/*11*/ printf("%s\n", s);
/*12*/ *(++p) = 'a'; 6. Il valore di strlen(w)
/*13*/ *((p--)+1) = '\0'; cambia durante
/*14*/ printf("%s\n", w); l'esecuazione
/*15*/ printf("%d\n", strlen(w+1));
/*16*/ printf("%d\n", strlen(p)); 7. Il valore di sizeof(s)
/*17*/ } cambia durante
l'esecuzione

Esercitazione 6 2014/2015 Pagina 6