0

ファイルの md5 ハッシュを計算する必要があります。それを行うためのライブラリを見つけることに成功し、それらはハッシュを画面に出力します。ハッシュをtxtファイルに出力する必要がありますが、いくつか問題があります。すべての 32 ビット ハッシュの代わりに 00 のみを出力します。これが印刷機能です。ファイルを開いて出力するための行を追加するだけです。関数の残りの部分はライブラリからのもので、正常に動作します。これは、画面にハッシュが正しい方法で出力されるためです。

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);
}
4

1 に答える 1

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]);
}
于 2012-04-22T12:35:22.547 に答える