Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio16:esercitazionia:esercitazione3

Questa è una vecchia versione del documento!


Esercitazione 3

Stringhe e libreria standard di IO, creazione di librerie statiche, macros, extern e static.

Esercizio 1: my word count

Scrivere un programma che realizzi l'equivalente del comando Unix wc limitatamente alle opzioni -l e -w (man 1 wc). Usare getopt per il parsing degli argomenti (man 3 getopt). Se non vengono passate opzioni, il programma stampa sia il numero di linee che il numero di parole del/dei file i cui nomi sono passati come argomento (mywc [-l -w] file1 [file2 file3 ….]).

Esercizio 2: controllo di errori

Scrivere una funzione macro 'CHECK_CALL_PTR' che prende due argomenti, un puntatore ed una stringa, e stampa utilizzando perror l'errno e la stringa passata come argomento prima di uscire dal programma con EXIT_FAILURE. Esempio di utilizzo:

 FILE *fp;
 CHECK_CALL_PTR(fp=fopen("fileprova.txt", "r"), opening fileprova.txt);

Se il file 'fileprova.txt' non esiste il risultato sarà:

opening fileprova.txt: No such file or directory

Stampare il valore di ritorno di un programma che testa la macro 'CHECK_CALL_PTR' sia in caso di successo che di fallimento (ricordare che il valore di ritorno dell'ultimo comando bash eseguito si può avere accedendo alla variabile di ambiente bash ?).

Esercizio 3:

Scrivere un programma che prende in ingresso un intero (piccolo, es. <html>⇐512</html>), alloca in memoria una matrice di 512×512 elementi float in modo che siano contigui in memoria. Inizializzare tale matrice (M1) in modo arbitrario (ad esempio M1(i,j) = (i+j)/2.0). Fare quindi il dump della matrice in formato binario su un file il cui nome è 'mat_dump.dat'. Rileggere quindi la matrice dal file 'mat_dump.dat' memorizzandola in una matrice differente da quella di partenza (chiamata M2). Al termine dell'operazione di lettura effettuare il confronto delle due matrici con la funzione di libreria memcmp (man 3 memcmp).

Esercizio 4:

informatica/sol/laboratorio16/esercitazionia/esercitazione3.1457276602.txt.gz · Ultima modifica: 06/03/2016 alle 15:03 (9 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki