在处理字符串问题上,C中常常使用sscanf与sprintf来解决此类问题。
要想理解好这两个函数的用法,不妨类比一下scanf 与 printf。事实上,两者可以表示成下面两种形式:
scanf(screen,"%d",&n);
printf(screen,"%d",n);
可以知道,scanf 就是将screen上的数值输入到 n 里,也就是说输入方向是 :从左到右。
printf 就是将 n 中的数值输出到 screen 上,也就是说输出的方向是:从右到左。
在这里我们不妨假设字符数组定义为:char str[100];
1.sscanf
可以理解为:string+scanf 。格式为sscanf(str,"%d",&n); 此写法的作用是:将str中的内容以“%d”的形式写到n中,即从左到右。示例如下:
#include <stdio.h>
int main(){
int n;
char str[100] = "123";
sscanf(str,"%d",&n);
printf("%d",n);
return 0;
}
2.sprintf
可以理解为:string + printf。格式为sprintf(str,"%d",n);此写法的作用是:将n以“%d”的形式写到str数组中,即从右至左。示例如下:
#include <stdio.h>
int main(){
int n = 233;
char str[100];
sprintf(str,"%d",n);
printf("%s",str);
return 0;
}
综上述,我们可以知道将“%d”替换成“%s”或者 “%f”等等,还可以与正则表达式联合使用。