これがうまくいくはずだと思った方法。
#include<stdio.h>
void main(void)
{
short i;
scanf("0x%hi",&i);
printf("0x%x\n",i);
printf("0%o\n",i);
printf("%d\n",i);
}
なぜだろう?答えがあれば、なぜこれが機能しないのか。これにより、16進数の10進数への変換が自動的に行われ、少なくとも10進数が正しく出力されるはずだと思いました
32768
0x26
046
38
32768 input で得られるものです。