sscanf和sprintf是用来处理字符串问题的利器,从构词上它们可以看成是string+scanf / string+printf。
记录sprintf & sscanf 之前,先来回顾一下printf & scanf:
如果想要从屏幕输入int型变量n并将int型变量n输出到屏幕上,写法如下:
scanf(“%d”, &n);
printf(“%d”, n);
事实上,上面的写法可以表示成下面的样子,其中screen表示屏幕:
scanf(screen, “%d”, &n);
printf(screen, “%d”, n);
可以看出:
scanf的输入其实是把screen的内容以%d的格式传输到n中(从左至右)
printf的输出则是把n以%d的格式传输到screen上(从右至左)
sscanf和sprintf与上面的格式是相同的,只不过把screen换成了字符数组(假设定义了一个char数组str[100]),如下所示:
sscanf(str, “%d”, &n);
sprintf(str, “%d”, n);
下面举例说明sscanf & sprinf的使用
/*
**sscanf的应用
*/
#include<stdio.h>
int main(){
char str[100] = "2048:3.14,hello";
int INT;
double DOUBLE;
char STR[100];
sscanf(str, "%d:%lf,%s",&INT,&DOUBLE,STR); //切记不遗漏"&"
printf("INT = %d, DOUBLE = %.2f, STR = %s\n",INT, DOUBLE, STR);
return 0;
}
输出结果:
INT = 2048, DOUBLE = 3.14, STR = hello
/*
**sprintf 的应用
*/
#include<stdio.h>
int INT = 12;
double DOUBLE = 3.1415;
char STR[100] = "Good";
char str[100];
sprintf(str,"%d:%.2f,%s",INT, DOUBLE, STR);
printf("%s",str);
return 0;
}
输出结果:
12:3.14,Good
sscanf还支持正则表达式,这里不做讨论。
参考自算法笔记。