sprintf函数原型
int sprintf(char *str,const char *format,…)
作用:格式化字符串
-
将数字变量转化成字符串变量
-
得到整形变量的16和8进制
-
连接多个字符串
1 char str[256]; 2 int data = 1024; 3 //将data转换为字符串 4 sprintf(str,"%d",data); 5 //获取data的十六进制 6 sprintf(str,"0x%X",data); 7 //获取data的八进制 8 sprintf(str,"0%o",data); 9 const char *s1 = "Hello"; 10 const char *s2 = "World"; 11 //连接字符串s1和s2 12 sprintf(str,"%s %s",s1,s2); 结果依次为: 1024 0x400 02000 hello world
sscanf函数
int sscanf(const char *str,const char *format,…)
const char *s = "http://www.baidu.com:1234";
char protocol[32] = { 0 };
char host[128] = { 0 };
char port[8] = { 0 };
sscanf(s, "%[^:]://%[^:]:%[1-9]", protocol, host, port);
//%[^:]表示取到:为止,%[1-9]: -表示范围,取1-9的数字
printf("protocol: %s\n", protocol);
printf("host: %s\n", host);
printf("port: %s\n", port);
输出结果:
protocol: http
host: www.baidu.com
port: 1234
(1)根据格式从字符串中提取数据。如从字符串中取出整数、浮点数和字符串等。
char str[]="123";
int a;
sscanf(str,"%d",&a); //a=123;
//浮点数
char str[]="123.321";
double a;
sscanf(str,"%lf",&a); //a=123.321
16进制转化为10进制
char str[]="AF";
int a;
sscanf(str,"%x",&a); // a=175;
(2)取指定长度的字符串
int a;
char str[] = "123445";
sscanf(str,"%3d",&a); //取三位字符串
(3)取到指定字符为止的字符串
char str[]="56787ff6543";
char ch[100];
sscanf(str,"%[^4]",ch);
cout<<ch<<endl; //取到4就停
(4)取仅包含指定字符集的字符串
sscasnf("12345ddds",%[1-9],buf); 取1到9的数字
(5)取到指定字符集为止的字符串
sscasnf("12345ddds",%[A-Z],buf); 取大写字母为止