wordcounts будет обновлен для подсчета
wordcounts будет обновлен для подсчета слов. Далее все отлично.
Нажмите снова F9, чтобы начать обработку следующего слова в буфе-
ре. Ага! Что-то не так.
Вы ожидаете, что программа остановится снова на строке 93
(на точке останова) для обработки другого символа. Но она этого
не делает. Она выполняется дальше и возвращается из функции.
Единственным путем оказаться на строке 99 является истинное зна-
чение проверяемого в цикле while значения. Это означает, что
*bufp != 0 должно при вычислении получать ложное значение
(false).
Чтобы проверить это, переместитесь к строке 83 и отметьте
все выражение *bufp != 0, поместив курсор под *, нажав клавишу
Ins, и переместив курсор на завершающий 0 перед ). Теперь вычис-
лите это выражение, открыв диалоговое окно Data¦Evaluate/Modify
(Данные¦Вычисление/Модификация) и нажав клавишу Enter, а затем
выбрав переключатель Eval (Вычисление), чтобы отмеченное выраже-
ние было воспринято. Значение в самом деле равно 0. Нажмите дваж-
ды клавишу Esc для возврата в окно Module (Модуль).
Эврика!
-----------------------------------------------------------------
Теперь, чтобы обнаружить ошибку, нужно сделать некий анали-
тический скачок. Причина того, что bufp указывает на 0, состоит в
том, что внутренний цикл while, начинающийся на строке 86, остав-
ляет его в конце слова. Для продолжения на следующем слове вы
должны увеличить bufp и переместить его с 0, который завершал
TDeb 3.0 #2-3 = 152 =
предыдущее слово. Для этого перед строкой 97 нужно добавить опе-
ратор "bufp++". Вы можете перекомпилировать свою программу с этим
оператором, однако Турбо отладчик позволяет вам "вставлять" выра-
жения, используя для этого особый вид точек останова.