C
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 C Downloads
#include <C_CkStringBuilder.h>
#include <C_CkCompression.h>
#include <C_CkBinData.h>
void ChilkatSample(void)
{
BOOL success;
HCkStringBuilder sbCompressedBase64;
HCkCompression compress;
HCkBinData bdCompressed;
HCkStringBuilder sbUncompressedChunk;
int i;
const char *originalText;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
sbCompressedBase64 = CkStringBuilder_Create();
compress = CkCompression_Create();
CkCompression_putAlgorithm(compress,"deflate");
CkCompression_putCharset(compress,"utf-8");
CkCompression_putEncodingMode(compress,"base64");
CkCompression_putFirstChunk(compress,TRUE);
CkCompression_putLastChunk(compress,FALSE);
bdCompressed = CkBinData_Create();
sbUncompressedChunk = CkStringBuilder_Create();
for (i = 0; i <= 24; i++) {
if (i == 24) {
CkCompression_putLastChunk(compress,TRUE);
}
CkStringBuilder_Clear(sbUncompressedChunk);
CkStringBuilder_AppendInt(sbUncompressedChunk,i);
CkStringBuilder_Append(sbUncompressedChunk,": This is a line of data to be compressed...\r\n");
CkCompression_CompressSb(compress,sbUncompressedChunk,bdCompressed);
CkCompression_putFirstChunk(compress,FALSE);
}
printf("The base64 encoded compressed text:\n");
printf("%s\n",CkBinData_getEncoded(bdCompressed,"base64"));
// Decompress in one call:
originalText = CkCompression_decompressStringENC(compress,CkBinData_getEncoded(bdCompressed,"base64"));
printf("%s\n",originalText);
CkStringBuilder_Dispose(sbCompressedBase64);
CkCompression_Dispose(compress);
CkBinData_Dispose(bdCompressed);
CkStringBuilder_Dispose(sbUncompressedChunk);
}