Средства для создания приложений в ОС UNIX (Лабораторная работа № 5), страница 2

./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. */