2012-04-22 12 views
0

ファイルに対してmd5ハッシュを計算する必要があります。私はそれを行うライブラリを見つけ出し、画面にハッシュを印刷します。 ハッシュをtxtファイルに出力する必要がありますが、いくつか問題があります。これは、すべての32ビットハッシュのうち00だけを出力します。これは印刷機能です。私は、ファイルを開いて印刷するための行だけを追加します。残りの関数はライブラリからのもので、スクリーン上で正しい方法でハッシュが印刷されるのでうまくいきます。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

ああ私の神、私は気づくことができませんBIG errまたは! :)ありがとう – phcaze