Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio17:esercitazionib:esercitazione1

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:esercitazione1 [20/02/2017 alle 07:28 (8 anni fa)] – [Esercizio 3] Massimo Torquatiinformatica:sol:laboratorio17:esercitazionib:esercitazione1 [22/02/2017 alle 11:16 (8 anni fa)] (versione attuale) – [Esercizio 3] Massimo Torquati
Linea 5: Linea 5:
  
 ===== Illustrazione uso gdb ===== ===== Illustrazione uso gdb =====
-Vediamo come si usa il debugger [[http://www.gnu.org/software/gdb| gdb]] usando il codice ''usodebug.c'' contenuto in {{:informatica:sol:laboratorio16:esercitazionia:debug.tgz| questo}} tarball. I comandi principali di ''gdb'' da ricordare sono: \\+Vediamo come si usa il debugger [[http://www.gnu.org/software/gdb| gdb]] usando il codice ''usodebug.c'' contenuto in {{:informatica:sol:laboratorio17:esercitazionib:debug.tgz| questo}} tarball. I comandi principali di ''gdb'' da ricordare sono: \\
 - run ( r ), break <file:linea> ( b ), step ( s ), next ( n ), print <variabile> ( p ), set args <argomenti>, backtrace ( bt ), finish, continue ( c ), quit ( q ).  - run ( r ), break <file:linea> ( b ), step ( s ), next ( n ), print <variabile> ( p ), set args <argomenti>, backtrace ( bt ), finish, continue ( c ), quit ( q ). 
  
Linea 34: Linea 34:
 Scrivere una funzione 'mystrcat' con la seguente segnatura: Scrivere una funzione 'mystrcat' con la seguente segnatura:
 <code c> <code c>
-const char *mystrcat(char *prima, ...);+const char *mystrcat(char* buffer, int buffer_size, char *prima, ...);
 </code> </code>
-che prenda un numero di stringhe variabili e che concateni  tutte le stringhe alla 'primacon lo stesso comportamento della funzione di libreria ''strcat'' (man 3 strcat).+La funzione prende un buffer, la lunghezza del buffer ed almeno uno stringa. Le stringhe possono essere un numero variabile (>1). La funzione concatena tutte le stringhe nel 'buffere ritorna il buffer stesso. 
 +ATTENZIONE alla gestione della memoria! 
 Utilizzare il seguente main: Utilizzare il seguente main:
 <code c> <code c>
Linea 44: Linea 46:
 #include <stdlib.h> #include <stdlib.h>
  
 +#define RIALLOCA(buf, newsize) \
 +    <inserire il codice per riallocare buf> 
 +     
 +char* mystrcat(char *buf, size_t sz, char *first, ...) {
 +  <implementare il codice>
 +}  
 +     
 int main() { int main() {
   char *buffer=NULL;   char *buffer=NULL;
Linea 65: Linea 74:
 ===== Per chi ha bisogno di prendere dimestichezza con il C (homeworks) ===== ===== Per chi ha bisogno di prendere dimestichezza con il C (homeworks) =====
  
-==== Esercizio 4 ====+===== Esercizio 4 =====
  
 Scrivere un programma che, dato un array di N elementi interi, costruisca un albero binario di ricerca (cioè per ogni nodo dell'albero, l'elemento del nodo è maggiore di tutti gli elementi del sottoalbero di sinistra e minore o uguale di tutti gli elementi del sottoalbero di destra).  Scrivere un programma che, dato un array di N elementi interi, costruisca un albero binario di ricerca (cioè per ogni nodo dell'albero, l'elemento del nodo è maggiore di tutti gli elementi del sottoalbero di sinistra e minore o uguale di tutti gli elementi del sottoalbero di destra). 
Linea 80: Linea 89:
  
 ===== Esercizio 5 ===== ===== Esercizio 5 =====
 +
 Non utilizzando la funzioni di libreria 'getopt' (man 3 getopt), scrivere un programma che effettua il parsing della linea di comando e che riconosce le seguenti opzioni:  Non utilizzando la funzioni di libreria 'getopt' (man 3 getopt), scrivere un programma che effettua il parsing della linea di comando e che riconosce le seguenti opzioni: 
 <code c> <code c>
informatica/sol/laboratorio17/esercitazionib/esercitazione1.1487575737.txt.gz · Ultima modifica: 20/02/2017 alle 07:28 (8 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki