01: // esempio lingering pointer corretto
02: // lingering -> remaining present although waning or gradually dying
03: #include<stdio.h>
04: #include<stdlib.h>
05:
06:
07: // questa funzione crea solo l'array leggendo da tastiera
08: char *readline(void)
09: {
10: char c, tmp[1000]; // sto largo...
11: int i=0;
12: do
13: {
14: scanf("%c", &c); // leggo carattere per carattere
15: tmp[i] = c;
16: ++i;
17: }
18: while(c != '\n');
19:
20: char *nbuffer = malloc(i*sizeof(char)); // alloco nuovo buffer e lo dimensiono in base al numero di caratteri letti
21: while(i>=0)
22: {
23: --i;
24: nbuffer[i] = tmp[i];
25: }
26:
27: return nbuffer; // nbuffer viene effettivamente distrutto, tuttavia il suo contenuto viene restituito e sopratutto cio' che avevo allocato con malloc() rimane
28: }
29:
30:
31: int main(int argc, char **argv){
32:
33: printf("Inserisci una frase: ");
34: char *frase=readline();
35: int i = 0;
36: printf("Hai inserito: ");
37: do
38: {
39: printf("%c", frase[i++]);
40: }while(frase[i] != '\n');
41:
42: printf("\n");
43:
44: free(frase);
45:
46: return 0;
47: }
48:
49:
Se avete commenti o osservaƶioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it