Home    | Products    | Downloads    | Purchase    | Support   

 Products

 Paint Express

 HashCalc

 FSUM

 QuickHash Library

    Download

    Purchase

    Samples

    License Agreement

    Related Links

    F.A.Q.

    Overview

 FastCRC Library

 Company

 About Us

 Contact Us

 Miscellaneous

 Affiliate Program

 Site Map

SlavaSoft QuickHash Library Samples
Sample #10 (QuickHash API - C)  

All

Previous Next


The following sample demonstrates how to use the CRC32 API to calculate the CRC32 checksum for a file.

#include <stdio.h>
#include <QuickHash.h>

#define BUFF_SIZE  1024

int CalculateFileChecksum( const char* filename, char* checksumhex )
{
    FILE* file;
    unsigned char buff[ BUFF_SIZE ];
    unsigned char context[ SLC_CRC32_CONTEXTSIZE ];

    file = fopen( filename, "rb" );

    if( file == NULL )
    {
        printf( "\nCould not open file: %s", filename );
        return 0;
    }

    /*****Initialize the context before calling Update, Final, or FinalHex****/

    SL_CRC32_Init( context );

    /*****Calculate the checksum by calling Update for each block of the file***/

    while( !feof( file ) )
    {
        unsigned int nCount = fread( buff, sizeof( char ), BUFF_SIZE, file );
        if( ferror( file ) )
        {
            printf( "\nAn error occurred when accessing the file: %s", filename );
            fclose( file );
            return 0;
        }
        SL_CRC32_Update( context, buff, nCount );
    }

    /*****Do final changes and get the checksum in hex format*******************/

    SL_CRC32_FinalHex( context, checksumhex, 0 ); /* SL_CRC32_FinalHex reinitializes the context */

    fclose( file );

    return 1;
}

int main()
{
    char buff[ 256 ];
    char checksumhex[ SLC_CRC32_HEXDIGESTSIZE ]; /*0 terminated*/

    do
    {
        /*****Get the file name from the user*************************************/

        printf( "\nEnter a file name:\n" );
        gets( buff );

        /*****Calculate the checksum************************************************/

        if( CalculateFileChecksum( buff, checksumhex ) != 0 )
            printf( "\nChecksum: %s", checksumhex );

        /*****Continue?***********************************************************/

        printf( "\nContinue (Y/N)?" );
        gets( buff );

    } while ( *buff == 'y' || *buff == 'Y' );

    return 0;
}
 
  Copyright SlavaSoft Inc. All rights reserved.