在C语言中打印哈希值

3

我正在尝试在C语言中打印SHA256哈希值,但当我使用下面所示的for循环时,只有在我添加换行符到printf时哈希值才会被打印出来。理想情况下,我希望将其全部打印在同一行上。

void enclave_main()
{
    char string[] = "Hello World";
    int x;

    unsigned char digest[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, string, strlen(string));
    SHA256_Final(digest, &sha256);

    for(x = 0; x < SHA256_DIGEST_LENGTH; x++)
        printf("%02x\n", digest[x]);

    sgx_exit(NULL);
}

1
fflush(stdout);? - EOF
1
仅在最后一个字节后打印换行符,而不是每个字节后。或刷新输出流。 - John Bollinger
1个回答

6

标准输出通常是按行缓冲的,这意味着直到缓冲区满或者你发送一个换行符或者你使用 fflush() 手动刷新流之前,输出不会被刷新到终端。

最简单的方法是在循环后打印换行符:

for(x = 0; x < SHA256_DIGEST_LENGTH; x++)
        printf("%02x", digest[x]);
putchar( '\n' );

谢谢你提供的解决方案。当我使用fflush()时它有效果。在for循环后面打印换行符并不能达到效果,只是打印了一个新的空行而没有井号。请注意我是在模拟器中进行这个操作,所以问题可能出在那里。 - Merlijn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接