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



         

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


Программа, описанная в следующем примере, вводит до 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 , /* признак направления * сортировки */

/*

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

*/

main(argc, argv)

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

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

{

int rdlinesO;

void bblsortO, wrlines();

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

# include "bblsort.h"

N extern char Line [] [LINESIZE]; [

/* bubble sort */

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);

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

static int lexcmp(i,J)

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

strcmp();

extern int Revflg;

register int Ic;

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

return ((Ic < 0 && Revflg)

(Ic > 0 && '.Revflg));

/* обмен строк */

static void swap(iJ) register int i, j; /* элементы массива строк */




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