Четвертый BORLAND С++ и его окружение

       

Приведем полный текст программы


001: #include <stdio.h>

002:

003: class decompressor {

004: int srclen, c, rcnt;

005: unsigned char *p;

006: public:

007: decompressor(unsigned char *s, int len);

008: int next(void);

009: };

010:

011: decompressor::decompressor(unsigned char *s, int len)

012: {

013: p = s; srclen = len; rcnt = 0;



014: }

015:

016: int decompressor::next(void)

017: {

018: if (rcnt && rcnt-- > 0) return c; // Декомпрессия

019: if (!srclen srclen-- <= 0) return -1;

020:

021: c = *p++; // Поместить следующий символ в буфер

022: if (c == 0xff) {

023: rcnt = *p++ - 1; // Отсчитать один записанный символ

024: c = *p++; // Здесь символ повторен

025: srclen -= 2;

026: }

027: return c;

028: }

029:

030: unsigned char buff[] = {'a',0xff,3,'b','c'};

031:

032: main()

033: {

034: int c;

035: decompressor dc(buff, sizeof(buff));

036:

037: while ((c = dc.next()) != -1) putchar(c);

038: return 0;

039: }



Содержание раздела