c语⾔:sprintf()数字转字符赋值给数组
//sprintf()
//sprintf 最常见的应⽤之⼀是把整数打印到字符串中,所以,spritnf 在⼤多数场合可以替代itoa
/*
缓冲区溢出
第⼀个参数的长度太短了,没的说,给个⼤点的地⽅吧。当然也可能是后⾯的参数的问题,建议变参对应⼀定要细⼼,
⽽打印字符串时,尽量使⽤”%.ns”的形式指定最⼤字符数。
忘记了第⼀个参数
低级得不能再低级问题,⽤printf ⽤得太惯了。
c语言中的sprintf用法变参对应出问题
通常是忘记了提供对应某个格式符的变参,导致以后的参数统统错位,检查检查吧。尤其是对应”*”的那些参数,都提供了吗?不要把⼀个整数对应⼀个”%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();
}
结果如下: