2012-04-22 85 views
0

我必须计算一个文件的md5散列。我成功地找到了库,并在屏幕上打印出散列。 我必须在txt文件上打印散列,但我遇到了一些问题。它只打印所有32位散列的00 intead。这是打印功能。我只添加行来打开文件并在其上打印,其余的函数来自库并且工作正常,因为在屏幕上哈希以正确的方式打印。md5“%02x”fprintf

似乎是某种与fprintf中和%02X问题”感谢

static void MDPrint (mdContext) 
MD5_CTX *mdContext; 
{ 
    int i; 
    FILE *fp; 
    if((fp=fopen("userDatabase.txt", "ab"))==NULL) printf("Error while opening the file..\n"); 
    else { 
    for (i = 0; i < 16; i++) 
      printf ("%02x", mdContext->digest[i]); 
      fprintf(fp, "%02x", mdContext->digest[i]); 
    } 
fclose(fp); 
} 

回答

2

你的问题是在这里;

for (i = 0; i < 16; i++) 
    printf ("%02x", mdContext->digest[i]); 
    fprintf(fp, "%02x", mdContext->digest[i]); 

由于没有大括号,只有printf的行将需要添加大括号使两条线都在循环中;

for (i = 0; i < 16; i++) 
{ 
    printf ("%02x", mdContext->digest[i]); 
    fprintf(fp, "%02x", mdContext->digest[i]); 
} 
+0

哦,我的上帝,我不能注意到大错误要么! :) 谢谢 – phcaze 2012-04-22 12:40:42