零.导言
sprintf 与 sscanf 函数是C语言中的标准库函数,定义在 <stdio.h> 头文件中。接下来我将分别介绍这两个函数并讲解他们和 printf 和 scanf 函数的区别和相似之处。
一.sprintf
其主要功能是将格式化的数据写入字符串。换句话说,它可以将各种不同类型的数据(如整数、浮点数、字符等)按照一定的格式组合成一个字符串。如下方代码:
int num = 100;
float score = 3.14;
char name[20] = "miku";
char str[100] = {0};
sprintf(str,"%d,%f,%s",num,score,name);
printf(str);
此处,sprintf 函数就将以上三个变量(num,score,name)按照一定的格式转化为字符串,并且将它们储存到str数组中去了。在打印的测试中,转化为字符串的三个变量也能正常打印。
二.sscanf
其主要功能是从一个字符串中按照指定的格式提取数据,并将其存储到对应的变量中。
int num = 100;
float score = 3.14;
char name[20] = "miku";
char str[100] = {0};
sprintf(str,"%d,%f,%s",num,score,name);
printf(str);
int num1 = 0;
float score1 = 0;
char name1[20] = "0";
sscanf(str,"%d,%f,%s",&num1,&score1,&name1);
printf("\n%d,%f,%s", num1, score1, name1);
如上图,现有三个新建变量nume1,score2,name1,使用 sscanf 函数即可以将 str 数组中的三个变量(num,score,name)的数值给输出到现有变量中,下图为打印的结果。
三.注意事项
- 对于 sprintf,格式字符串中的转换说明符必须与提供的变量类型和顺序相匹配。
- 对于 sscanf,格式字符串中的转换说明符必须与期望从字符串中读取的数据类型和顺序相匹配。
如果在使用这两个函数时没有正确匹配格式字符串和变量,可能会导致变量的数值发生未知的改变或无法正确解析数据。
四.相关链接
【C/C++】scanf函数与printf函数_c++中scanf和printf-优快云博客
完