Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1438585
  • 博文数量: 704
  • 博客积分: 10140
  • 博客等级: 上将
  • 技术积分: 6230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 20:41
文章分类

全部博文(704)

文章存档

2013年(1)

2012年(16)

2011年(536)

2010年(151)

分类:

2011-08-23 20:26:36

计算两个文件内容的校验码,比较两个校验码是否一直即可判断文件内容是否相同。
#include
#include

#define BUF_SIZE 1024

int check(gchar* path,gchar sum[128]);

int main(int argc,char** argv){
    gchar check_sum_s_a[128];
    gchar check_sum_s_b[128];
    int equal = 0;
   
    check(argv[1],check_sum_s_a); 
    check(argv[2],check_sum_s_b); 

    equal = g_ascii_strcasecmp(check_sum_s_a,check_sum_s_b);
    if(equal == 0){
        g_print("%s and %s are equal!\n",argv[1],argv[2]);
    }
    else{
        g_print("%s = %s\n%s = %s\n",argv[1],check_sum_s_a,argv[2],check_sum_s_b);
    }
    
    return 0;
}

int check(gchar* path,gchar* sum){
 #define BUF_SIZE 1024 
    gchar buf[BUF_SIZE];
    guint len = 0;
    GChecksum* check_sum_a = g_checksum_new(G_CHECKSUM_MD5);

    FILE* fa = fopen(path,"rb");
    if(fa == NULL) return -1;
    while((len = fread(buf,1,BUF_SIZE,fa)) > 0){
        g_checksum_update(check_sum_a,buf,len);
    }
    const gchar* check_sum_s_a = g_checksum_get_string(check_sum_a);
    g_stpcpy(sum,check_sum_s_a);
    
    g_checksum_free(check_sum_a);
    fclose(fa);
#undef BUF_SIZE
}
阅读(822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~