• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

想请教一下大家一个语法上的问题,关于sprintf函数的?

马神一号 2018-06-26 浏览量:654
 想请教一下大家一个语法上的问题,关于sprintf函数的。我定义一个uint8_t类型的*abc,还有一个i为0,然后sprintf((char*)abc"%d/r/n"i),接着printf("%s"abc),结果出来的是乱码。想问下大家,我这么写的语法上是有错误的吗?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个其实是有问题的,因为abc不能正确初始化,一般在c语言中不直接定义字符串变量(本身也没有,但可以定义字符串常量),而是定义字符串数组。单独定义字符串指针也是没有意义的,因为这时指针没有正确的初始化去指向合适的位置。

    正确的处理应该是

    uint8_t abc[100]={0};
    int i=0;
    sprintf( (char*) abc "%d\r\n" i);
    printf( "%s" abc);

    • 发布于 2018-06-26
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • *abc是指针啊,并不是一个数据,乱码应该是输出了指针的地址了,你要取这个地址的数据
    • 发布于2018-06-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 逗号都没打出来吧……感觉sprintf是不是写反了?鉴于说输出乱码,且当程序本身是对的。不过指针没有初始化,就还没有分配空间,该指针指向的空间的值是不可预测的。而且换行符的斜杠也打反了……
    • 发布于2018-06-26
    • 举报
    • 评论 0
    • 0
    • 0

  • sprintf里面不可以有(char*)的,因为sprintf返回的数组本身就是字符串数组,一般用法:

    char a[10];

    sprintf(a"%d %d %d"123);

    • 发布于2018-06-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 不能char *进行强制转换,去掉,直接用*取值
    • 发布于2018-06-30
    • 举报
    • 评论 0
    • 0
    • 0

  • sprint是的char*操作的,你输出的是这个指针的地址,并不是这个数据啊
    • 发布于2018-07-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 类型不同,char*是地址不是字符,所以打出来会乱码
    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

想请教一下大家一个语法上的问题,关于sprintf函数的?