Esaminate il programma che trovate in calce, rilevate gli errori e correggeteli.
Il programma deve:
FINE
(ogni parola รจ una sequenza di caratteri alfabetici senza spazi, la parola FINE
non fa parte dell'elenco);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.
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
Eseguendo
./Soluzione
e ricevendo da standard input
UFFA
CHE
NOIA
FINE
il programma emette sul flusso di uscita
UFFA
CHE
NOIA
#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;
}