c语言:sprintf() 数字转字符赋值给数组

//sprintf()
//sprintf 最常见的应用之一是把整数打印到字符串中,所以,spritnf 在大多数场合可以替代itoa
/*
缓冲区溢出
第一个参数的长度太短了,没的说,给个大点的地方吧。当然也可能是后面的参数的问题,建议变参对应一定要细心,
而打印字符串时,尽量使用”%.ns”的形式指定最大字符数。
忘记了第一个参数
低级得不能再低级问题,用printf 用得太惯了。
变参对应出问题
通常是忘记了提供对应某个格式符的变参,导致以后的参数统统错位,检查检查吧。尤其是对应”*”的那些参数,都提供了吗?不要把一个整数对应一个”%s”。
*/
#include <stdio.h>
int main()
{
    char s[10];
    sprintf(s, "%d", 123); //产生"123",赋值给数组 
    printf("%s\n",s);
    sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567" ,赋值给数组
    printf("%s\n",s);
    sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
    printf("%s\n",s);
    sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
    printf("%s\n",s);
    sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐
    printf("%s\n",s);
    sprintf(s, "%08X", 4567); //产生:"000011D7"
    printf("%s\n",s);
    sprintf(s, "%08x", 4567); //产生:"000011D7"
    printf("%s\n",s);
    getchar();

}

结果如下:

posted @ 2021-04-14 16:19  myrj  阅读(1561)  评论(0编辑  收藏  举报