请教VC中unsigned char里用啥替换sprintf的功能呢
比如原来是inta=1000;charb[10];sprintf(&b[0],"%x",a);然后b[0]='1';b[1]='0';b[2]='0';b[3]='0';...
比如原来是
int a=1000;
char b[10];
sprintf(&b[0],"%x",a);
然后b[0]='1';b[1]='0';b[2]='0';b[3]='0';
现在我把b[10]改成unsigned char需要怎样才能达到原来的效果呢
sprintf((char*)b,"%x",a);这样不行,DEBUG到这行会报错,而且这样强制类型转换数据会不会溢出?
我用的vc6.0...
unsigned char a[10]={0};
int b=1234;
sprintf((char *)a[0],"%d",b);
编译能通过,运行报错
sprintf((char *)b,"%d",a);确实全部通过,但是如果我要从a[1]开始打印呢 展开
int a=1000;
char b[10];
sprintf(&b[0],"%x",a);
然后b[0]='1';b[1]='0';b[2]='0';b[3]='0';
现在我把b[10]改成unsigned char需要怎样才能达到原来的效果呢
sprintf((char*)b,"%x",a);这样不行,DEBUG到这行会报错,而且这样强制类型转换数据会不会溢出?
我用的vc6.0...
unsigned char a[10]={0};
int b=1234;
sprintf((char *)a[0],"%d",b);
编译能通过,运行报错
sprintf((char *)b,"%d",a);确实全部通过,但是如果我要从a[1]开始打印呢 展开
展开全部
写成sprintf((char *)b,"%d",a);就好了
编译运行调试在vc6.0下全部通过,你用的什么?
我推测你是用了printf("%s",a[1]);语句吧,如果是这样,错误的原因可能是%s只适用于char型的字符数组,对于unsigned char就只能自己写循环输出了,代码如下:
unsigned char *p=&a[1];
while(*p)
{
printf("%c",*p);
p++;
}
printf("\n");
此方法在xpsp2home+vc6.0下测试通过
编译运行调试在vc6.0下全部通过,你用的什么?
我推测你是用了printf("%s",a[1]);语句吧,如果是这样,错误的原因可能是%s只适用于char型的字符数组,对于unsigned char就只能自己写循环输出了,代码如下:
unsigned char *p=&a[1];
while(*p)
{
printf("%c",*p);
p++;
}
printf("\n");
此方法在xpsp2home+vc6.0下测试通过
展开全部
int a=1000;
unsigned char b[10];
sprintf((char *)&b[0],"%x",a);
如果从a[1]开始打印就是:
sprintf((char *)&b[0],"%x",&a[1]);
或者:
sprintf((char *)&b[1],"%x",&a[1]);
取决于你想打印到b[0]开始的,还是b[1]开始的空间里。
unsigned char b[10];
sprintf((char *)&b[0],"%x",a);
如果从a[1]开始打印就是:
sprintf((char *)&b[0],"%x",&a[1]);
或者:
sprintf((char *)&b[1],"%x",&a[1]);
取决于你想打印到b[0]开始的,还是b[1]开始的空间里。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样试一下:
sprintf((char*)b,"%x",a);
sprintf((char*)b,"%x",a);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询