typedef struct {
char hoge[5];
char hoge2[5];
} Hoge;

Hoge hogehoge;

foo(&hogehoge);


/* 以下、fooの本体 */
void foo(Hoge *bar) {
    int i = 123;

    memset(bar, '\0', sizeof(bar));
    printf("bar->hogeの値は[%s]です。", bar->hoge);    /* 初期化されてない */

    sprintf(bar->hoge, "%d", i);             /* コピーされない */
    printf("bar->hogeの値は[%s]です。", bar->hoge);
}


まず、以上のコードでは、Hoge型の変数hogeの内容は初期化されませんか?
sizeof(Hoge)
とすればよいのでしょうか?
(すいません。本来なら試してから質問するのが筋です。ですが今実行環境がありません)

次に(これが本当の疑問です)、
sprintfが反映されないのは何故でしょうか?

ご指導よろしくお願いします