Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1723513
  • 博文数量: 171
  • 博客积分: 11553
  • 博客等级: 上将
  • 技术积分: 3986
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 20:28
文章分类

全部博文(171)

文章存档

2012年(2)

2011年(70)

2010年(9)

2009年(14)

2008年(76)

分类: C/C++

2011-08-22 00:12:25

计算两个文件内容的校验码,比较两个校验码是否一直即可判断文件内容是否相同。
#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
}
阅读(2324) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

GFree_Wind2011-08-22 12:08:53

g_checksum_new函数在哪?