Справочная система C guide



Содержание


9 СТРУКТУРА ПРОГРАММЫ

Программа, описанная в следующем примере, вводит до MAXLINES строк со стандартного входа, сортирует строки в лексикографическом порядке, возрастающем или уменьшающемся в зависимости от признака, передаваемого функции mainQ через аргумент argv Затем программа записывает отсортированные строки на стандартный выход Стандартными входом и выходом (stdin и stdout) могут быть терминал, канал или некоторый файл

bblsort.h

А#define MAXLINES 100

“define LINLSIZE (132+1)

main.c

ю “include (stdio h> “include "bblsort h"

char Lme[MAXLINES]ELINESIZE], /* буфер строк */ С int Revfig , /* признак направления * сортировки */

/*

* сортировка строк текста в лексикографическом порядке

*/

56 Структура программы

niain(argc, argv)

D char **argv, /* аргументы вызова программы */

int argc, /* число аргументов */

{.

д- mt rdlinesO;

void bblsortO, wrlines();

F int numlines;

G Revflg = (argc > 1 && |argv[l][0] [ == '-');

numlines = rdlinesO;

bblsort(numlmes);

wrlines(numlines),

/*

* запись строк со стандартного выхода

*/

Н static int rdlinesO

chai^ *fgets(), / register int l;

/ foi(i=0,i< MAXLINES; i++)

if (fgets(Lme[i], LINESIZE, stdin)

/ == ] (char *)NULL ) break;

return (i);

} /*

* запись строк на стандартный выход

*/

Структура программы 57

К static void wrhnes(n) L register mt n; /* число строк */

{

register int l,

for (i = 0; i < n; i++) fputs(Lme [i], stdout);

bblsort.c

M # include "bblsort.h"

N extern char Line [] [LINESIZE]; [

/* ,* bubble sort

*/ 0 void

bblsort(n) register int n; /* число строк */

int lexcmp();

void swap();

regicterint i,j;

for (i = 1; i <= n - 1; i++) for(J=n- 1;j>= i;J—) if (lexcmp(j - 1, J)) swapO - l.j);

58 Структура программы

/*

* лексикографическое сравнение двух строк

*/

static int lexcmp(i,J)

Р register int i, j; /* элементы массива строк */ {

q mt strcmpO;

extern int Revflg;

register int Ic;

Ic = strcmp(Line [i], Line [j]);

d return ((Ic < 0 && Revflg)




Содержание  Назад  Вперед