Более оптимизированный и правильный с точки зрения задачи код (слово все-таки это не символ, поэтому это минимум 2 символа).
Код:
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 255
int Words_Count(char *buff)
{
int word = 0; // количество слов
int i = 0; // итератор
int c = 0; // счетчик символов для определения слова
/* нужно для правильной работы цикла */
if (!isspace(strlen(buff))) // последний символ не пробел?
buff[strlen(buff)] = ' '; // нет, вносим пробел
for (i = 0; i < strlen(buff); i++)
{
// Если не пробел, считаем количество символов
if (!isspace(buff[i]))
c++;
// если пробел
else if (isspace(buff[i]))
{
// более двух символов значит слово,
// подсчитываем и сбрасываем счетчик
if (c >= 2)
word++;
c = 0;
}
}
return word;
}
main ()
{
// Выделяем память и заполняем нулями
char *buff = (char*)calloc(SIZE, sizeof(char));
if (!buff)
printf("Not enough memory");
// считываем строку
gets_s(buff,SIZE);
printf("So, we have the %d words", Words_Count(buff));
getchar();
return 0;
}