Sample code for 30+ languages & platforms
Unicode C

Compress String Feed to Base64

See more Compression Examples

This example receives incoming text data in chunks, compresses as a stream, and accumulates the compressed data in base64.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkStringBuilderW.h>
#include <C_CkCompressionW.h>
#include <C_CkBinDataW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkStringBuilderW sbCompressedBase64;
    HCkCompressionW compress;
    HCkBinDataW bdCompressed;
    HCkStringBuilderW sbUncompressedChunk;
    int i;
    const wchar_t *originalText;

    success = FALSE;

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    sbCompressedBase64 = CkStringBuilderW_Create();

    compress = CkCompressionW_Create();
    CkCompressionW_putAlgorithm(compress,L"deflate");
    CkCompressionW_putCharset(compress,L"utf-8");
    CkCompressionW_putEncodingMode(compress,L"base64");

    CkCompressionW_putFirstChunk(compress,TRUE);
    CkCompressionW_putLastChunk(compress,FALSE);

    bdCompressed = CkBinDataW_Create();
    sbUncompressedChunk = CkStringBuilderW_Create();

    for (i = 0; i <= 24; i++) {
        if (i == 24) {
            CkCompressionW_putLastChunk(compress,TRUE);
        }

        CkStringBuilderW_Clear(sbUncompressedChunk);
        CkStringBuilderW_AppendInt(sbUncompressedChunk,i);
        CkStringBuilderW_Append(sbUncompressedChunk,L": This is a line of data to be compressed...\r\n");

        CkCompressionW_CompressSb(compress,sbUncompressedChunk,bdCompressed);

        CkCompressionW_putFirstChunk(compress,FALSE);
    }

    wprintf(L"The base64 encoded compressed text:\n");
    wprintf(L"%s\n",CkBinDataW_getEncoded(bdCompressed,L"base64"));

    // Decompress in one call:
    originalText = CkCompressionW_decompressStringENC(compress,CkBinDataW_getEncoded(bdCompressed,L"base64"));
    wprintf(L"%s\n",originalText);


    CkStringBuilderW_Dispose(sbCompressedBase64);
    CkCompressionW_Dispose(compress);
    CkBinDataW_Dispose(bdCompressed);
    CkStringBuilderW_Dispose(sbUncompressedChunk);

    }