Questa è una vecchia versione del documento!
Indice
Esercitazione 4
Macros, libreria standard di IO, Makefile primi script Bash.
Esercizio 1: macro
Dato il seguente codice main C:
#define dimN 16 #define dimM 8 int main() { long *M = malloc(dimN*dimM*sizeof(long)); assert(M); for(size_t i=0;i<dimN;++i) for(size_t j=0;j<dimM;++j) { ELEM(M,i,j) = i+j; } PRINTMAT(M); free(M); return 0; }
scrivere le 2 macros ELEM
e PRINTMAT
. Al suo interno PRINTMAT
usa la macro ELEM
per accedere agli elementi della matrice. Esempio di output richiesto:
Stampo la matrice M: 0 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 2 3 ....
Esercizio 2: Makefile minimale
Scrivere un Makefile
minimale per compilare l'esercizio precedente. Utilizzare il compilatore g++
ed i flags -O3 -Wall
. Il Makefile
deve avere anche il target “phony” clean.
Esercizio 3: matdump testuale
Esercizio 4: script1
Estrarre dal file /etc/passwd
la lista di tutti gli utenti della macchina utilizzando il comando cut
(vedere man 1 cut). Ordinare alfabeticamente la lista ottenuta utilizzando il comando sort
(vedere man 1 sort).
NB: fare attenzione al seguente messaggio di warning contenuto nel manuale del comando sort:
“The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.”