//файл 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; /* элементы массива строк */