Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
строки* pszTarget<br />
void concatString (char szTarget[], char szSourcel])<br />
int nTarget Index;<br />
int nSourcelndex;<br />
// найти конец первой строки<br />
while(szTarget[++nTargetIndex])<br />
// присоединяет вторую строку к концу первой<br />
while(szSource[nSourcelndex])<br />
г<br />
1<br />
szTarget[nTargetlndex] =<br />
szSource[nSourcelndex];<br />
n7argetlndex++;<br />
nSourceIndex++;<br />
Соберите и запустите программу. Когда она запросит первую строку, введите чтонибудь<br />
наподобие "это строка", а на запрос второй строки введите "ЭТО СТ<strong>Р</strong>ОКА"<br />
(впрочем, можно писать все, что угодно).<br />
Вместо объединения двух строк программа завершится с кодом выхода Oxff. Щелкните<br />
на ОК (других вариантов у вас все равно нет). Чтобы утешить вас, отладчик откроет<br />
окно, содержащее следующую информацию:<br />
Call frame traceback<br />
Concatenate.epp(4 9) in function concatString FPcTO<br />
Concatenate.epp(28} in function main<br />
in function crtl__startup+174<br />
Из этого видно, что ошибка возникла в строке 49 модуля Concatenate, epp, которая<br />
находится в функции concatString (), вызванной в строке 28 функции main ().<br />
Строка 49 имеет вид<br />
while(szTarget[++nTaгдеtIndex])<br />
А строка 28 содержит вызов функции<br />
concatString(szStringl, " — ");<br />
Внешне вроде бы все в порядке и с командой в строке 49, и с вызовом функции<br />
в строке 28. Чтобы найти ошибку, понадобится отладчик.<br />
Примечание. Хотя вы уже встречались с похожей ошибкой, я все равно настоятельно<br />
советую детально разобрать этот пример.<br />
Пошаговое выполнение программы<br />
Первое, что стоит сделать при поиске ошибки с помощью отладчика, — это выполнить<br />
программу в пошаговом режиме. В среде rhide выполните команду Runoprogram Reset.<br />
Примечание. Из табл. 11.1 видно, что в rhide эта команда выполняется с помощью<br />
клавиш {или клавиш в Visual C++). Больше я не буду давать подсказок,<br />
поскольку все необходимые команды содержатся в табл. 11.1. Кроме того, все команды,<br />
используемые в этой главе, доступны из выпадающих меню среды разработчика.<br />
Команда Program Reset заставляет отладчик заново начать работу с программой {а<br />
не с того места, где вы находитесь). Никогда не вредно перезагрузить отладчик перед<br />
началом работы.<br />
Выполните команду Step Over (пошаговое выполнение без входа в функции). Среда<br />
rhide откроет окно MS DOS, как и в нормальном режиме, однако сразу после<br />
этого переключится в окно редактирования программы, выделив первую исполняе-<br />
126 Часть II. Становимся программистами