2016-06-29 10 views
2

CでSHA256ハッシュを印刷しようとしていますが、以下に示すforループを使用すると、ハッシュが印刷される唯一の方法はprintfに改行を追加する場合です。理想的には、すべてを1行に印刷したいと考えています。Cでハッシュを印刷する

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は(標準出力);'? – EOF

+1

最後のバイトの後にのみ改行を印刷します。または、出力ストリームをフラッシュします。 –

答えて

3

標準出力(通常は)ライン・バッファ、バッファはあなたがfflush()と手動でストリームをフラッシュ改行又はを送信完全またはになるまで出力が端末にフラッシュされないことを意味しています。行うには

最も簡単な方法は、ループの後に改行を出力します:

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

解決に感謝します。 fflush()を使用すると動作します。 forループの後で改行を印刷しなかったハッシュなしで新しい行を表示するだけです。私はエミュレータでこれをやっていることに心配しているので、問題があるかもしれません。 – Merlijn