sscanf与ssprintf
LimenG1109 · · 个人记录
今天,我来介绍一下sscanf与ssprintf大法
首先,二者都要加头文件:
include<cstdio> or #include<stdio.h>
sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。
sscanf(s,"%lf",&k);//将这一字符串输出为一个浮点数
sprintf(ss,"%.2f",k);//将这一浮点数输出为一个有两位小数的字符串
原型
int sscanf(
const char *buffer,
const char *format,
...
);
int sprintf(
char *buffer,
const char *format,
...
);
功能:类似于scanf和printf 但把字符串*buffer用于输入输出
sscanf与sprintf是处理字符串问题的利器。sscanf可以理解为string+scanf,则sprintf可以理解为string+printf
接下来看一看我写的代码:
#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main(){
short k=45;
char s[3];
cin>>s;
sscanf(s,"%d",&k);
sprintf(s,"%d",k);
cout<<s;
return 0;
}
F11按下后(编译运行),我们输入任意3个字符,输出的是45,也就是k的值.
那么,这俩玩意儿能干啥呢?
1.sprintf用于格式化字符串 把变量打印到字符串中,从而获得数字的字符形式,这样不需要手工转换。 例如 char c[100]; int k=255; sprintf(c,"%d",k); //c包含"255"
2.sprintf用于进制转换 可以方便地得到变量的十六进制和八进制字符序列,再稍加处理即可得到每一位的值。 char c[100]; int k=255; sprintf(c,"%x",k); //c包含"ff" c[0]='f' c[1]='f'
3.sprintf用于连接字符串 方便地连接两个或者多个字符串 char buf[1024]; char a[100]="I "; char b[100]="love "; char c[100]="ACM." sprintf(buf,"%s%s%s",a,b,c); //buf 包含"I love ACM."