Elenco con errori

Esaminate il programma che trovate in calce, rilevate gli errori e correggeteli.

Il programma deve:

Per ogni correzione, annotate un commento che spiega qual era l'errore e come l'avete corretto.

NOTA IMPORTANTE: effettuate le modifiche necessarie a correggere gli errori ma senza stravolgere il programma.

Esempio 1

Eseguendo

./Soluzione

e avendo nel flusso di ingresso:

luca
mattia
alfonso
violetta
anna
Carlo
annalisa
silvia
riccardo
FINE

il programma emette sul flusso di uscita

luca
mattia
alfonso
violetta
anna
Carlo
annalisa
silvia
riccardo

Esempio 2

Eseguendo

./Soluzione

e ricevendo da standard input

UFFA
CHE
NOIA
FINE

il programma emette sul flusso di uscita

UFFA
CHE
NOIA

Programma da correggere

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 20

typedef char *String;
typedef struct{
  int size;
  int count;
  String *content;
} *Elenco;


int main( void ) {
  Elenco b = NULL;
  int size = 4, i = 0;
  char name[N+1] = "";

  b = malloc( sizeof(Elenco) );
  b -> size = 4;
  b -> count = 0;
  b -> content = calloc( size, sizeof(char *) );

  while( strcmp( name, "FINE" ) != 0 ) {
    scanf( "%s", name );

    if ( b -> count == b -> size ) {
      b -> size *= 2;
      b-> content = realloc (b-> content, size * sizeof(char *));
    }
    b -> content[i] = name;
    i++;

  }

  for ( int k = 0; k < b -> size; k++ )
      printf( "%s\n", b -> content[k] );

  return 0;
}