strcpy 使わないのが邪道ってこと?
それとも "sage"[i] のこと?
後者なら、
char hex[9];
for ( int lpc = 0; 8 > lpc; lpc++, i >>= 4 )
hex[ 7 - lpc ] = "0123456789ABCDEF"[ i % 16 ];
hex[8] = 0;
という程度なら邪道とは言えないのでは?
より邪道っぽいのは以下。
char mes[100];
int i = 0;
while ( i++[mes] = i["test"] );