短的无符号数据中的字节分配

pra*_*pta 0 c

请检查以下程序

#include <stdio.h>
#include<stdlib.h>
int main()
{
        char *Date= NULL;
        unsigned short y=2013;
        Date =  malloc(3);
        sprintf((char *)Date,"%hu",y);  
        printf("%d %d %d %d %d \n",Date[0],Date[1],Date[2],Date[3],Date[4]);

        printf("%s %d %d",Date,strlen(Date),sizeof(y));
}

output:
50 48 49 51 0
2013 4 2
Run Code Online (Sandbox Code Playgroud)

我如何得到字符串长度4而不是2,因为我将一个短整数值放入内存,所以它应该占用2字节的内存.但它是如何占用4字节.

每个字节如何从输入获得2 0 1 3,而在一个字节中为20,在另一个字节中为13.

我想把20到1个字节和13个放到另一个字节.怎么做.请告诉我

请给出一些答案.

Tau*_*rre 5

正如其名称所示,sprintf函数编写一个格式化字符串.因此,您的号码2013将转换为"2013"​​(5个字符的字符串).