关于C中的sprintf

来源:百度知道 编辑:UC知道 时间:2024/05/04 10:36:07
用sprintf作数字转字符串,
unsigned char s[3];
sprintf(s,"%d",12);
可是得到的S字符串中是不对的!如果是 sprintf(s,"%x",0x45);得到的s为“45”,又正确。
unsigned char s[5]
sprintf(s,"%d",1234);
结果又正确
为什么?急啊
能编译啊,为什么不能?字符数组。不对么?
不好意思,忘了说了,是keil c51。是单片机的

unsigned char我在VC里编译通不过,必须要将s强制转换成char *,但运行结果是12,没问题

为什么是 unsigned char?
你能编译通过么?

sprintf(s, "%d", (int)12);
sprintf(s, "%d", (int)123);
sprintf(s, "%d", (int)1234);
测试通过。

试试 sprintf(s,"%u",12);