Ciao, onestamente non ho capito come dovrebbe funzionare lenght...
Se ho capito bene tu vuoi che ad ogni iterazione del while quella funzione calcoli la lunghezza della stringa letta ( la variabile bozza) e aggiorni il valore della variabile count giusto?
In tal caso, come mai non provi una soluzione di questo tipo?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *string,bozza[100];
int count;
FILE *input;
input = fopen("/home/sergio/file","r");
if(input==NULL)
{
printf("Errore apertura file!\n");
exit(1);
}
count=0;
while((fscanf(input,"%s",bozza))==1)
{
printf("%s lunghezza parola:%d\n",bozza,strlen(bozza));
count+=strlen(bozza);
}
count++; //incremento count di 1 per inserire il \0 finale
string=malloc(count*sizeof(char));
if(string==NULL)
{
printf("Impossibile allocare la stringa...\n");
exit(1);
}
printf("%d",count);
return 0;
}
EDIT:
Ho provato a scrivere anche io una funzione simile alla tua, così non ho cambiato troppo il codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void lung(char string[],int *n);
int main()
{
char *string,bozza[100];
int count,somma;
FILE *input;
input = fopen("/home/sergio/file","r");
if(input==NULL)
{
printf("Errore apertura file!\n");
exit(1);
}
somma=count=0;
while((fscanf(input,"%s",bozza))==1)
{
lung(bozza,&count);
printf("%s lunghezza parola:%d\n",bozza,count);
somma+=count;
}
somma++; //incremento somma di 1 per inserire il \0 finale
string=malloc(count*sizeof(char));
if(string==NULL)
{
printf("Impossibile allocare la stringa...\n");
exit(1);
}
printf("%d",somma);
return 0;
}
void lung(char string[],int *n)
{
int i=0;
while(string && *string++)
{
i++;
}
*n=i;
}