Sei sulla pagina 1di 6

Corso di Fondamenti di Informatica

Ingegneria delle Comunicazioni – BCOR


Ingegneria Elettronica – BELR

Introduzione al C

Esercitazione 4

D. Bloisi, A. Pennisi, S. Peluso, S. Salza


Esercizio 1
Si scriva una funzione che riceva in ingresso una
stringa s (puntatore a char) e restituisca
Ø  una nuova stringa uguale alla seconda metà di
s, se s ha lunghezza pari
Ø  una nuova stringa contenente tutti i caratteri di
s tranne il primo e l’ultimo, altrimenti.
Si assuma che la stringa s abbia sempre
lunghezza pari o maggiore di 3.

Esercitazione 4 2013/2014 Pagina 2


Esempio Esecuzione Esercizio 1
s = “informatica”
Valore da restituire s’ = “nformatic”

s = “matematica”
Valore da restituire s’ = “atica”

Esercitazione 4 2013/2014 Pagina 3


Esercizio 2
Scrivere un programma ext che prenda in input
da riga di comando il nome di un file in formato
<nome>.<estensione> e stampi a video
l’estensione di tale file. Si assuma che l’input sia
sempre nel formato corretto e che <nome> possa
contenere il carattere ‘.’ al suo interno.
Esempi
>ext mio.file.txt
txt
>ext appunti.doc
doc
Esercitazione 4 2013/2014 Pagina 4
Esercizio 3
/* 1*/#include <stdio.h> 1. La riga 9 stampa 3
/* 2*/#include <string.h> 2. La riga 10 stampa 4
/* 3*/ 3. La riga 13 stampa Artemoderna
/* 4*/int main() { 4. La riga 14 stampa e
/* 5*/ char c[80] = "art"; 5. L’output del programma è
/* 6*/ char* d = "moderna"; 3
/* 7*/ char* e = c; 2
/* 8*/ *(e++) = 'A'; Artmoderna
/* 9*/ printf("%d\n", strlen(c)); e
/*10*/ printf("%d\n", strlen(e));
/*11*/ *(e+1) = 'e';
/*12*/ strcat(c, d);
/*13*/ printf("%s\n", c);
/*14*/ printf("%c\n", *(++e));
/*15*/ return 0;
/*16*/}

Esercitazione 4 2013/2014 Pagina 5


Esercizio 4
/* 1*/#include <stdio.h>
/* 2*/#include <string.h> 1.  La riga 9 stampa 20
/* 3*/ 2.  La riga 9 produce un
/* 4*/int main() { buffer overflow
/* 5*/ int arr[20], *p, i; 3. La riga 11 stampa 1
/* 6*/ p = arr; 4. La riga 13 stampa 0
/* 7*/ for (i=0; i < 20; i++) 5. La riga 14 stampa 0
/* 8*/ arr[i] = i; 6. La riga 15 stampa 1
/* 9*/ printf("%d\n", *(p+5)+15); 7. La riga 16 stampa 1
/*10*/ int flag = *(++p);
/*11*/ printf("%d\n",flag);
/*12*/ char s[20] = "ciao";
/*13*/ printf("%d\n", strcmp("ciao",s));
/*14*/ printf("%d\n", strcmp(s,"ciao"));
/*15*/ printf("%d\n",strcmp("ciao",s)&&(flag=strcmp(s,"ciao")));
/*16*/ printf("%d\n",flag);
/*17*/ return 0;
/*18*/}
Esercitazione 4 Pagina 6
2013/2014