./a.out
this is the test
thisisthetest
vi hello/abcd.c
В 27 строке добавили ‘\n’ после %s
./a.out
this is the test
this
is
the
test
./a.out -t
this is the test
gdb ./a.out
(gdb) break 26
Breakpoint 1 at 0x400591: file abcd.c, line 26.
(gdb) run
Starting program: /home/brigades/pm7303/workdir/hello/a.out
this is test
Breakpoint 1, PrintWords (wc=3, match=0 '\0') at abcd.c:26
26 while ((*cp) && (*cp ++!= match));
(gdb) print *cp
$1 = 116 't'
(gdb) print match
$2 = 0 '\0'
vi hello/abcd.c
исправили в 26 строке: вынесли cp++ за цикл
до: while ((*cp) && (*cp++ != match));
после: while ((*cp) && (*cp != match)) {
cp++;
}
cvs –d ~/cvsroot commit hello/abcd.c
Checking in hello/abcd.c;
/home/brigades/ pm7303/cvsroot/hello/abcd.c,v <-- abcd.c
new revision: 1.3; previous revision: 1.2
done
rm -r hello
3) cvs –d ~/cvsroot checkout hello
cvs checkout: Updating hello
U hello/abcd.c
gcc -g hello/abcd.c
/tmp/ccmDV9tj.o: In function `main':
hello/abcd.c:60: warning: the `gets' function is
dangerous and should not be used.
./a.out
this is the test
this
is
the
test
./a.out -t
this is the test
this
test
10. После получения корректных результатов выполнения программы abcd с помощью редактора Vi в начало отлаженной программы введите комментарий.
"Программа abcd отлажена с помощью отладчика gdb
14.04.09. Бригадой группы ПМ-73 в составе:
Базиной Дарьи Александровны
Кулагиной Маргариты Викторовны"
11. Выведите на терминал всю последовательность осуществленных модификаций содержимого файла abcd.c.
cvs –d ~/cvsroot log hello/abcd.c
RCS file: /home/brigades/pm7303/cvsroot/hello/abcd.c,v
Working file: hello/abcd.c
head: 1.3
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1.3
date: 2009/04/14 19:43:01; author: pm7303; state: Exp; lines: +5 -2
исправили в 26 строке: вынесли cp++ за цикл
----------------------------
revision 1.2
date: 2009/04/14 19:07:54; author: pm7303; state: Exp; lines: +1 -1
исправили в 56 строке match=' ' на match='\0'
----------------------------
revision 1.1
date: 2009/04/14 18:11:29; author: pm7303; state: Exp;
Исправили ошибку в 28 строке: заменили символ '0' на недостающую закрывающую кавычку.
=====================================================
cvs –d ~/cvsroot rdiff -r 1.1 .
cvs rdiff: Diffing .
cvs rdiff: Diffing CVSROOT
cvs rdiff: Diffing hello
Index: hello/abcd.c
diff -c hello/abcd.c:1.1 hello/abcd.c:1.3
*** hello/abcd.c:1.1 Tue Apr 14 17:57:20 2009
--- hello/abcd.c Tue Apr 14 18:50:01 2009
***************
*** 23,31 ****
/* Try to match the given character.
* Scan the word, attempting to match,
* or until the end of the word is found. */
! while ((*cp) && (*cp++ != match));
if (*cp == match) /* Found a match? Write the word on stdout. */
(void) printf("%s", Words[ix]); } return; }
--- 23,31 ----
/* Try to match the given character.
* Scan the word, attempting to match,
* or until the end of the word is found. */
! while ((*cp) && (*cp!= match)){
! cp++;
! }
if (*cp == match) /* Found a match? Write the word on stdout. */
(void) printf("%s", Words[ix]); } return; }
***************
*** 53,59 ****
int main(argc, argv) int argc; char *argv[]; { char buf[BUFSIZ], match;
/* Check command line arguments. */
! if (argc < 2) match = ' ';
/* No command line argument, match all words. */
else match = *++argv[1]; /* match the char after the first - */
/* Until no more input on stdin. */
--- 55,62 ----
int main(argc, argv) int argc; char *argv[]; { char buf[BUFSIZ], match;
/* Check command line arguments. */
! if (argc < 2) match = '\0';
/* No command line argument, match all words. */
else match = *++argv[1]; /* match the char after the first - */
/* Until no more input on stdin. */
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.