This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教,用sprintf能不能直接把无符号长整型变成字符串?还有我下载运行的时候sprintf转换浮点数的时候跑飞是什么原因?

CCS3.3 下,CPU为28335

float i;

int j;

char tt[30];

i = 33.33;

j = 123;

sprint(tt,"%f",i);

结果程序运行到这里就跑飞了,如果改成整型的

比如

sprintf(tt,"%d",j);

就执行正常,不会跑飞.

程序编译的时候没有任何报错.

  • sprint(tt,"%f",i);  为什么不是sprintf()呢???

  • 打错了,我是手打上去的,不是拷贝的

  • 重新整理一下:

    void main(void)
    {
    char tt[50];
    float i;
    int j;

    .

    初始化

    .

    i = 123.456;
    j = 654;
    sprintf(tt,"%d",j);
    sprintf(tt,"%f",i);//语句不能正常运行,死机。

    这次是直接从源程序考下来的.

    跟踪跳转两次都到了这里

    0B452 sprintf:
    00B452 FE0A ADDB SP,#10
    00B453 5DAD MOVZ AR5,@SP
    00B454 C44E MOVL XAR6,*-SP[14]
    00B455 DD8A SUBB XAR5,#10
    00B456 0EA5 MOVU ACC,@AR5
    00B457 5DAD MOVZ AR5,@SP
    00B458 A84A MOVL *-SP[10],XAR4
    00B459 C248 MOVL *-SP[8],XAR6
    00B45A 76C0B47E MOVL XAR7,#0x00B47E
    00B45C DD88 SUBB XAR5,#8
    00B45D 5CA5 MOVZ AR4,@AR5
    00B45E 5DAD MOVZ AR5,@SP
    00B45F 1E42 MOVL *-SP[2],ACC
    00B460 7680B46C MOVL XAR6,#0x00B46C
    00B462 C344 MOVL *-SP[4],XAR7
    00B463 DD8E SUBB XAR5,#14
    00B464 C246 MOVL *-SP[6],XAR6
    00B465 5DA5 MOVZ AR5,@AR5
    00B466 76409AB4 LCR __TI_printfi
    00B468 8A4A MOVL XAR4,*-SP[10]
    00B469 2BC4 MOV *+XAR4[0],#0
    00B46A FE8A SUBB SP,#10
    00B46B 0006 LRETR
    00B46C _outs:

  • 最近也遇到这个问题了, 你是怎么解决的啊,  重写 sprintf 这个函数吗?