informatica:sol:laboratorio:esercitazioni:esercitazione2
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
informatica:sol:laboratorio:esercitazioni:esercitazione2 [03/03/2010 alle 15:30 (16 anni fa)] – Susanna Pelagatti | informatica:sol:laboratorio:esercitazioni:esercitazione2 [10/03/2010 alle 11:35 (16 anni fa)] (versione attuale) – Susanna Pelagatti | ||
---|---|---|---|
Linea 11: | Linea 11: | ||
Per fare questo procedere come segue: | Per fare questo procedere come segue: | ||
* leggere le informazioni in '' | * leggere le informazioni in '' | ||
+ | * includere l' | ||
* inserire la chiamata alla funzione di libreria mtrace() all' | * inserire la chiamata alla funzione di libreria mtrace() all' | ||
- | * inserire la chiamata alla funzione di libreria | + | * inserire la chiamata alla funzione di libreria |
* compilare il file da verificare con opzione '' | * compilare il file da verificare con opzione '' | ||
< | < | ||
- | bash$ gcc -Wall -pedantic -g -o prova main.c | + | bash$ gcc -Wall -pedantic -g -o prova main.c |
</ | </ | ||
* settare la variabile di ambiente '' | * settare la variabile di ambiente '' | ||
Linea 33: | Linea 34: | ||
===== Esercizio 2: verificare gli accessi in memoria: valgrind ===== | ===== Esercizio 2: verificare gli accessi in memoria: valgrind ===== | ||
+ | Verificare la correttezza degli accessi ai puntatori compiuti dalle funzioni su liste di interi della libreria libList.a utilizzando '' | ||
+ | Questo strumento permette fra l' | ||
+ | |||
+ | |||
+ | Per fare questo procedere come segue: | ||
+ | * compilare il file da verificare con opzione '' | ||
+ | < | ||
+ | bash$ gcc -Wall -pedantic -g -o prova main.c | ||
+ | </ | ||
+ | * eseguire | ||
+ | < | ||
+ | bash$ valgrind ./prova | ||
+ | </ | ||
+ | in questo modo, a schermo verranno riportare le infrazioni rilevate. Ad esempio, //invalid read// o //invalid write// sono accessi in lettura o scrittura a memoria non allocata o gia' deallocata. | ||
+ | |||
+ | |||
+ | ===== Esercizio 3: lettura-scrittura su file con stdio ===== | ||
+ | |||
+ | Scrivere un programma C che legge una sequenza di studenti da file '' | ||
+ | Ogni studente e' memorizzato su file in una singola linea contenente tre stringhe di caratteri separate da ':' | ||
+ | < | ||
+ | cognome: | ||
+ | </ | ||
+ | quindi ad esempio | ||
+ | < | ||
+ | ... | ||
+ | Rossi: | ||
+ | Bixio: | ||
+ | Garibaldi Giuseppe 787899 | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Il programma memorizza i dati relativi a ciascun studente in un array di strutture di tipo studente opportunamente definito e li stampa in ordine alfabetico. | ||
+ | |||
+ | Suggerimento: | ||
+ | |||
+ | ===== Esercizio 4: lettura-scrittura su file passato come argomento ===== | ||
+ | |||
+ | In C e' possibile accedere agli argomenti passati sulla linea di comando tramite la struttura '' | ||
+ | <code c> | ||
+ | int main (int argc, char* argv[]) { | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
+ | in questo modo '' | ||
+ | < | ||
+ | bash$ ./prova pippo pluto paperone | ||
+ | </ | ||
+ | '' | ||
+ | |||
+ | Si chiedere di modificare l' | ||
+ | < | ||
+ | bash$ leggistud nome_file | ||
+ | </ | ||
+ | che ordina gli studenti contenuti nel file '' | ||
+ | |||
+ | ===== Esercizio 5: Manipolare '' | ||
+ | |||
+ | In C, la maggiorn parte delle funzioni di libreria che segnalano un errore settano anche la variabile globale '' | ||
+ | < | ||
+ | bash$ man errno | ||
+ | </ | ||
+ | Dopo l' | ||
+ | E' possibile manipolare '' | ||
+ | <code c> | ||
+ | #include < | ||
+ | </ | ||
+ | |||
+ | L' |
informatica/sol/laboratorio/esercitazioni/esercitazione2.1267630239.txt.gz · Ultima modifica: 03/03/2010 alle 15:30 (16 anni fa) da Susanna Pelagatti