Ciao Skynet, non sarebbe più conveniente un approccio di questo tipo (questo considera come parole qualsiasi sequenza di caratteri diversa da spazi,newline e tab)?
Una volta ottenute le occorrenze delle parole lette, salvate in array_length, ed il numero di carattere come indice dell'array penso sia banale concludere l'esercizio no?
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 1000
typedef enum {FALSE,TRUE} bool_t;
int main()
{
int c,i,n_char,n_words;
int array_length[MAX_LEN + 1];
bool_t in_word;
FILE *file;
file=fopen("prova.txt","r");
if(file==NULL)
{
fprintf(stderr,"Impossibile aprire file\n");
exit(1);
}
for(i = 0; i <= MAX_LEN; ++i)
array_length[i] = 0;
n_char=0;
in_word=TRUE;
while((c = fgetc(file)) != EOF)
{
n_char++;
if(c == ' ' || c == '\t' || c == '\n')
{
in_word = FALSE;
n_char--;
}
if(in_word==FALSE)
{
if(n_char != 0 && n_char <= MAX_LEN)
array_length[n_char]++;
in_word = TRUE;
n_char = 0;
}
}
for(i=1;i<MAX_LEN;i++)
if(array_length[i]!=0)
printf("%d Parole da %d caratteri\n",array_length[i],i);
return 0;
}