Другие языки программирования и технологии

Помогите объяснить программу C++

Напишите пожалуйста что делает каждая строчка программы. Программа считает количество введенных слов с клавиатуры. Словами считается набор любых символов разделенные пробелом.
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

int sp = 0;
char str[100];
for (int i = 0; i <= 99; i++) str[i] = '`';
fgets(str, 99, stdin);
int lstr = sizeof str / sizeof str[0];

for (int i = 0; i <= lstr; i++)
{
if (isspace(str[i])) sp++;
}

cout << sp << endl;

cout <<"\n";
system("pause");
return 0;
}
Программа делает глупости, не имеющие никакого отношения к кол-ву слов:

Во первых, совершенно бессмысленный цикл for (int i = 0; i <= 99; i++) str[i] = '`';, заполняющий 99 из 100 элементов массива пробелами.

Во вторых, совершенно бессмысленное выражение int lstr = sizeof str / sizeof str[0];, ВСЕГДА равное 100.

В третьих, цикл не по введённой строке, а по всему массиву str.

В четвёртых, считается не кол-во слов, а кол-во пробельных символов (а не только пробелов) в этом массиве. Напомню, что в начале ВЕСЬ массив, кроме последнего его символа, заполняется пробелами.

char str[200]; // буфер строки
int sp = 0; // счётчик слов
fgets(str, 199, stdin); // читаем строку
for (int i = 0; str[i] != '\0'; ++i) { // цикл по символам строки
// если текущий символ - не пробел, а следующий символ - пробел или конец строки
if (str[i] != ' ' && (str[i + 1] == ' ' || str[i + 1] == '\0')) { ++sp; }
}
cout << sp;
БЮ
Бекзат Юнусов
86 056
Лучший ответ
Виторган Лабеан Вы не могли бы тогда предложить свой вариант программы пожалуйста?
Программу переписывать. Адище. + она считает кол-во пробелов +табуляции и т. д. в _"лучшем"_ случае, что не соотв. условию => объяснять бесполезно.
ф-я isspace
_http://cppstudio.com/post/990/

Отдельный привет за int lstr = sizeof str / sizeof str[0];
strlen запретили пользоваться или просто идти по строке, пока не найден '\0'??

P.S: Н-р при вводе " test" (пробел test) будет 2. в _лучшем_ случае =)
Lavrik )
Lavrik )
84 764
Виторган Лабеан Вы бы могли предложить свой вариант программы пожалуйста?