#include #include #include #include "list.h" LIST_EL *lista = NULL; void read_file( char *s ) { FILE *fp; char tmp[80]; LIST_EL *node; LIST_EL *ptr; fp = fopen( s, "r" ); if( fp == NULL ) { printf( "Impossibile aprire %s\n", s ); exit( 1 ); } while( fscanf( fp, "%s", tmp ) != EOF ) { ptr = search( lista, tmp ); if( ptr == NULL ) { printf( "==> %s\n", tmp ); node = (LIST_EL *)malloc( sizeof( LIST_EL ) ); if( node == NULL ) { printf( "Impossibile allocare memoria\n" ); exit( 1 ); } node->next = NULL; node->word = (char *)strdup( tmp ); node->freq = 1; append( &lista, node ); } else { printf( "Aggiorno %s\n", tmp ); ptr->freq++; } } fclose( fp ); } void print_freq( void ) { LIST_EL *ptr; ptr = lista; while( ptr != NULL ) { printf( "%20s %5d\n", ptr->word, ptr->freq ); ptr = ptr->next; } } int main( int argc, char **argv ) { if( argc < 2 ) { printf( "Uso: frequenze nomefile\n" ); exit( 1 ); } read_file( argv[1] ); print_freq(); dispose( &lista ); return( 0 ); }