C
C
Compress Text Feed to Binary
See more Compression Examples
This example receives incoming text data in chunks, compresses as a stream, and accumulates the compressed binary data.Chilkat C Downloads
#include <C_CkBinData.h>
#include <C_CkCompression.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
BOOL success;
HCkBinData bdCompressed;
HCkCompression compress;
HCkStringBuilder sbUncompressedChunk;
int i;
HCkBinData bdDecompressed;
const char *originalText;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
bdCompressed = CkBinData_Create();
compress = CkCompression_Create();
CkCompression_putAlgorithm(compress,"deflate");
CkCompression_putCharset(compress,"utf-8");
sbUncompressedChunk = CkStringBuilder_Create();
CkCompression_putFirstChunk(compress,TRUE);
CkCompression_putLastChunk(compress,FALSE);
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);
}
// Show the compressed data in hex format:
printf("The hex encoded compressed text:\n");
printf("%s\n",CkBinData_getEncoded(bdCompressed,"hex"));
// Now decompress in one call. It is important to set both FirstChunk and LastChunk = TRUE
bdDecompressed = CkBinData_Create();
CkCompression_putFirstChunk(compress,TRUE);
CkCompression_putLastChunk(compress,TRUE);
success = CkCompression_DecompressBd2(compress,bdCompressed,bdDecompressed);
if (success == FALSE) {
printf("%s\n",CkCompression_lastErrorText(compress));
CkBinData_Dispose(bdCompressed);
CkCompression_Dispose(compress);
CkStringBuilder_Dispose(sbUncompressedChunk);
CkBinData_Dispose(bdDecompressed);
return;
}
originalText = CkBinData_getString(bdDecompressed,"utf-8");
printf("%s\n",originalText);
CkBinData_Dispose(bdCompressed);
CkCompression_Dispose(compress);
CkStringBuilder_Dispose(sbUncompressedChunk);
CkBinData_Dispose(bdDecompressed);
}