Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio17:esercitazionib:esercitazione2

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio17:esercitazionib:esercitazione2 [01/03/2017 alle 15:55 (8 anni fa)] – [Esercizio 1: funzioni rientranti] Massimo Torquatiinformatica:sol:laboratorio17:esercitazionib:esercitazione2 [08/03/2017 alle 15:38 (8 anni fa)] (versione attuale) – [Esercizio 5: libtokenizer.a] Massimo Torquati
Linea 2: Linea 2:
  
  
-===== Esercizio 1: funzioni rientranti =====+===== Esercizio 1: funzioni rientranti (tokenizer_r) =====
  
 Si consideri il seguente programma: Si consideri il seguente programma:
Linea 32: Linea 32:
 (Suggerimento: leggere con attenzione il ''man'' di ''strtok''). (Suggerimento: leggere con attenzione il ''man'' di ''strtok'').
  
-NOTA: se si utilizza l'opzione ''-std=c99'', per evitare i warnings del tipo "implicit declaration of function X" aggiungere la seguente opzione di compilazione "-D_POSIX_C_SOURCE=200112L", oppure inserire la seguente define **prima di ogni include**:+NOTA: se si utilizza l'opzione ''-std=c99'', per evitare i warnings del tipo "implicit declaration of function X" aggiungere la seguente opzione di compilazione "-D_POSIX_C_SOURCE=200112L", oppure inserire la seguente define **prima del primo include**:
 <code> <code>
 #define _POSIX_C_SOURCE 200112L #define _POSIX_C_SOURCE 200112L
Linea 45: Linea 45:
 Scrivere un programma C che prende in input 3 argomenti, i primi due argomenti sono obbligatori, il terzo e' opzionale. Il primo argomento è il nome di un file di input in formato testuale contenente stringhe di parole. Ogni stringa  ha una lunghezza massima pari a 1024 caratteri. Il secondo argomento corrisponde ad un file testuale di output che dovra' contenere tutte le parole del primo file, scritte al contrario una per ogni riga. Se il file di input non esiste, il programma dovrà ritornare un messaggio di errore opportuno sullo standard error (stderr). Se il file di output esiste gia', questo dovra' essere sovrascritto se il terzo argomento del programma o non è stato specificato oppure se tale argomento è diverso dal carattere 'a'. Se il terzo argomento è uguale al carattere 'a' l'output del programma dovrà essere appeso in fondo al file. Scrivere un programma C che prende in input 3 argomenti, i primi due argomenti sono obbligatori, il terzo e' opzionale. Il primo argomento è il nome di un file di input in formato testuale contenente stringhe di parole. Ogni stringa  ha una lunghezza massima pari a 1024 caratteri. Il secondo argomento corrisponde ad un file testuale di output che dovra' contenere tutte le parole del primo file, scritte al contrario una per ogni riga. Se il file di input non esiste, il programma dovrà ritornare un messaggio di errore opportuno sullo standard error (stderr). Se il file di output esiste gia', questo dovra' essere sovrascritto se il terzo argomento del programma o non è stato specificato oppure se tale argomento è diverso dal carattere 'a'. Se il terzo argomento è uguale al carattere 'a' l'output del programma dovrà essere appeso in fondo al file.
  
-Suggerimento: per leggere righe del file di input utilizzare fgets, per scrivere righe sul file di output utilizzare fprintf. +Suggerimento: per leggere righe del file di input utilizzare ''fgets'' (''man 3 fgets''), per scrivere righe sul file di output utilizzare ''fprintf''
  
 ===== Esercizio 4: valgrind ===== ===== Esercizio 4: valgrind =====
Linea 65: Linea 65:
 ===== Esercizio 5: libtokenizer.a ===== ===== Esercizio 5: libtokenizer.a =====
  
-Inserire nel file 'tokenizer.h' l'interfaccia di due funzioni 'tokenizer' e 'tokenizer_r' quest'ultima come  descritta nell'esercizio mentre tokenizer ha la stessa interfaccia di tokenizer_r ma usa strtok invece di strtok_r. Inserire nel file 'tokenizer.c' l'implementazione delle due funzioni. Creare quindi una librerie statica 'libtokenizer.a' e riscrivere il programma dell'esercizio 2 in modo che il programma main includa il file 'tokenizer.h' e linki la libreria 'libtokenizer.a'.+Inserire nel file 'tokenizer.h' l'interfaccia di due funzioni 'tokenizer' e 'tokenizer_r' (quest'ultima e' quella implementata nell'esercizio mentre tokenizer ha la stessa interfaccia di tokenizer_r ma usa strtok invece di strtok_r). Inserire nel file 'tokenizer.c' l'implementazione delle due funzioni. Creare quindi una librerie statica 'libtokenizer.a' e riscrivere il programma dell'esercizio 2 in modo che il programma main includa il file 'tokenizer.h' e linki la libreria 'libtokenizer.a'.
  
 ===== Esercizio 6: libtokenizer.so ===== ===== Esercizio 6: libtokenizer.so =====
informatica/sol/laboratorio17/esercitazionib/esercitazione2.1488383750.txt.gz · Ultima modifica: 01/03/2017 alle 15:55 (8 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki