Oregon nel tuo codice ogni spazio conterà una parola,se l'intervallo degli spazi tra parole è superiore ad uno il codice aumenterà il wordcount piu del dovuto.
Un metodo potrebbe essere quello di tenere traccia delle parole contate,ovvero se trovo un carattere dopo uno spazio e non l'ho contata allora la conto.
Tradotto in c diviene:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int wordcount(char* s)
{
int nw;
int havecount;
for(nw=0,havecount=0; *s!='\0';s++)
{
if (isgraph(*s))
{
if (!havecount)
{
nw++;
havecount=1;
}
}
else
{
havecount=0;
}
}
return nw;
}
int main()
{
char *test=" ciao mondo come stai?";
int r=wordcount(test);
printf("Word Count::%d\n",r);
return 0;
}