Hash md5";%02x";格式化输出

Hash md5";%02x";格式化输出,hash,md5,printf,Hash,Md5,Printf,我必须计算一个文件的md5哈希。我成功地找到了库来做这件事,它们在屏幕上打印哈希。 我必须在txt文件上打印哈希,但我有一些问题。它只打印所有32位散列的00个整数。这是打印功能。我只添加了打开文件并在上面打印的行,函数的其余部分来自库,工作正常,因为在屏幕上哈希是以正确的方式打印的 fprintf和%02x似乎有一些问题。谢谢 static void MDPrint(mdContext) MD5_CTX*mdContext; { int i; 文件*fp; 如果((fp=fopen(“user

我必须计算一个文件的md5哈希。我成功地找到了库来做这件事,它们在屏幕上打印哈希。 我必须在txt文件上打印哈希,但我有一些问题。它只打印所有32位散列的00个整数。这是打印功能。我只添加了打开文件并在上面打印的行,函数的其余部分来自库,工作正常,因为在屏幕上哈希是以正确的方式打印的

fprintf和%02x似乎有一些问题。谢谢

static void MDPrint(mdContext)
MD5_CTX*mdContext;
{
int i;
文件*fp;
如果((fp=fopen(“userDatabase.txt”,“ab”))==NULL)printf(“打开文件时出错..\n”);
否则{
对于(i=0;i<16;i++)
printf(“%02x”,mdContext->digest[i]);
fprintf(fp,“%02x”,mdContext->digest[i]);
}
fclose(fp);
}
你的问题就在这里

for (i = 0; i < 16; i++)
    printf ("%02x", mdContext->digest[i]);
    fprintf(fp, "%02x", mdContext->digest[i]);
(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]);
}
(i=0;i<16;i++)的

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