Sample code for 30+ languages & platforms
Unicode C

Compress and Decompress a String

See more Compression Examples

Demonstrates how to compress and decompress a string.

Chilkat Unicode C Downloads

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

void ChilkatSample(void)
    {
    BOOL success;
    HCkStringBuilderW sb;
    int i;
    HCkCompressionW compress;
    HCkByteData compressedBytes;
    const wchar_t *compressedBase64;
    const wchar_t *decompressedString;

    success = FALSE;

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

    sb = CkStringBuilderW_Create();

    for (i = 1; i <= 20; i++) {
        CkStringBuilderW_Append(sb,L"This is the original uncompressed string.\r\n");
    }

    compress = CkCompressionW_Create();
    CkCompressionW_putAlgorithm(compress,L"deflate");
    //  Indicate that the utf-8 byte representation of the string should be compressed.
    CkCompressionW_putCharset(compress,L"utf-8");

    compressedBytes = CkByteData_Create();
    success = CkCompressionW_CompressString(compress,CkStringBuilderW_getAsString(sb),compressedBytes);

    //  If the compressed data is desired in string format, then get the base64 representation of the bytes.
    CkCompressionW_putEncodingMode(compress,L"base64");
    compressedBase64 = CkCompressionW_compressStringENC(compress,CkStringBuilderW_getAsString(sb));
    wprintf(L"Compressed Bytes as Base64: %s\n",compressedBase64);

    //  Now decompress...
    decompressedString = CkCompressionW_decompressString(compress,compressedBytes);
    wprintf(L"The original string after decompressing from binary compressed data:\n");
    wprintf(L"%s\n",decompressedString);

    //  To decompress from Base64...
    CkCompressionW_putEncodingMode(compress,L"base64");
    decompressedString = CkCompressionW_decompressStringENC(compress,compressedBase64);
    wprintf(L"The original string after decompressing from Base64:\n");
    wprintf(L"%s\n",decompressedString);


    CkStringBuilderW_Dispose(sb);
    CkCompressionW_Dispose(compress);
    CkByteData_Dispose(compressedBytes);

    }