зачем делается вот это:
str[1]='\0';
AnsiToOem(str,str);
?
Ладно, пусть ты читаешь посимвольно: тогда нужно прогнать символ через ряд условий, проверяющих, к какому диапазону он принадлежит - цифра это, латинская буква, пробел, перевод строки или что ещё - и увеличить соответствующий счётчик.
Число слов, как я понимаю, определяется примерно так: если символ - не пробел и не перевод строки, то устанавливаешь флаг, что идёт слово. Как только встречается перевод строки или пробел, проверяешь флаг - если он указывает, что предыдущий символ принадлежал слову, то надо увеличить счётчик слов.