#include <iostream>
using namespace std;
int main(){
char str[50],s[20];
int n, a=5;
char b[8]={"abc"};
n=sprintf(str, "%d + %s", a, b);
printf("%s", str);
cout<<n<<endl;
n=sprintf(s, "%d", 123);
cout<<s<<endl;
cout<<n<<endl; //产生"123" 可以指定宽度,不足的左边补空格:
n=sprintf(s, "%8d%8d", 123, 4567);
cout<<s<<endl;
cout<<n<<endl; //产生:" 123 4567" 当然也可以左对齐:
n=sprintf(s, "%-8d%8d", 123, 4567);
cout<<s<<endl;
cout<<n<<endl;//产生:"123 4567" 也可以按照16进制打印:
n=sprintf(s, "%8x", 4567);
cout<<s<<endl;
cout<<n<<endl; //小写16进制,宽度占8个位置,右对齐
n=sprintf(s, "%-8X", 4568);
cout<<s<<endl;
cout<<n<<endl;
n=sprintf(s, "%X", 4568);
cout<<s<<endl;
cout<<n<<endl; //大写16进制,宽度占4个位置,左对齐
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "
sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142" 注意一个问题,你猜
int i = 100;
sprintf(s, "%.2f", i);//
cout<<s<<endl;
cout<<n<<endl;
/*sprintf(s, "%.2f", (double)i); // 错误 i 为double 不可分为float;
cout<<s<<endl;
cout<<n<<endl; */
system("pause");
return 0;
}
sprintf 有点类似printf ,只是把字符串输出到了第一个参数中了
n=sprintf(str, "%d + %s", a, b);
把处理后的结果显示在字符串str中
返回值n是字符串的长度(n可有可无)
利用prinf的格式控制,可以对sprintf处理的结果进行格式控制输出到str中
总的用法
1.非字符串转字符串
2.链接字符串
3.打印地址信息
如何使用这个函数的核心就是格式控制的技巧
更应该记住的应该是如何进行格式控制输出
而这些格式控制大部分在printf中就直接可以使用的
%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。
sprintf(s, "%d", 123); //产生"123" 可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567" 当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567" 也可以按照16进制打印:
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
sprintf(s, "%-8x", 4568); //大写16进制,宽度占8个位置,左对齐
明白这个是用来处理字符串,生成字符串就可以喽
更方便的用法,更加的灵活