10進→16進変換のプログラムなんですが、うまく結果が表示されません。
変な記号がまじります。
添削お願いできませんでしょうか。

#include<stdio.h>

void main()
{
char code[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

char hex[4];
int i,data;

for(i=0;i<4;i++)
hex[i]='0';
printf("データ入力:");
scanf("%d",&data);

for(i=0;data>=16;i++){
hex[i]=code[data%16];
data/=16;
}
hex[i]=data;
for(i=3;i>=0;i--)
printf("%c",hex[i]);
}