青白江建设局网站,教师做爰网站,自己做网站流程,wordpress防止机器评论今天重点介绍2个函数#xff0c;分别是sprintf和sscanf#xff0c;用来将格式化数据和字符串相互转换。它们的作用分别是#xff1a;
sprintf函数用于将格式化数据转换成字符串。sscanf函数用于将字符串转换成格式化数据。
接下来是第一个大问题#xff1a;我怎么记忆呢分别是sprintf和sscanf用来将格式化数据和字符串相互转换。它们的作用分别是
sprintf函数用于将格式化数据转换成字符串。sscanf函数用于将字符串转换成格式化数据。
接下来是第一个大问题我怎么记忆呢这好容易记反呀
别担心我来教你。你也许不知道sprintf和sscanf但你肯定知道printf和scanf。
printf负责把格式化数据输出到屏幕上。sprintf和printf类似只不过不是输出到屏幕上而是输出到一个字符串中。把格式化数据输出到字符串中不就是把格式化数据转换成字符串嘛。scanf负责从键盘中输入格式化数据。同理sscanf和scanf类似只不过不是从键盘中输入数据而是从一个字符串中输入数据也就是把字符串转换成格式化数据。
接下来讲解如何使用这两个函数。
1.sprintf
假设有这么一个结构体
struct S
{int i;double d;char arr[20];
};我们创建了一个结构体变量
struct S s {10, 3.14, abcdef};此时内存中就有了一份格式化数据。我们如何把这个格式化数据转换成字符串呢
首先得有字符串存储的位置C语言用字符数组来存储字符串
char str[100] {0};接下来我们要干的事情就是把s结构体中的数据转换成字符串存储到str中这就需要使用sprintf。
sprintf的声明如下
int sprintf ( char * str, const char * format, ... );其中str就是转换出来的字符串要存储到哪一个char*的指针后面的参数就跟printf是一样的了。在上面的例子中应该这么使用
sprintf(str, %d %lf %s\n, s.i, s.d, s.arr);如果你还是不理解可以这么想下面的代码是什么意思
printf(%d %lf %s\n, s.i, s.d, s.arr);就是把s中的内容打印到屏幕上嘛。那如果不是打印到屏幕上而是“打印”到字符串中就是sprintf的作用了。
如果你不相信可以把str中的内容打印出来
printf(%s\n, str);输出结果如下 这说明转换成功了。
2.sscanf
假设我们已经有一个字符串了
char str[] 10 3.140000 abcdef\n;其实这个字符串和上面的例子中转换出来的字符串是一样的。
然后创建一个结构体
struct S s {0};我们如何把这个字符串重新转换成结构体s呢这就需要用到sscanf函数声明如下
int sscanf ( const char * s, const char * format, ...);第一个参数就是你要转换的字符串后面的参数和scanf一样。
这次我换一种讲述方式方便大家更好的理解。首先假设我要你使用scanf函数来输入数据到结构体s中你会怎么写
scanf(%d %lf %s, s.i, s.d, s.arr);注意数组名本身就是地址所以不需要取地址()。
scanf函数可以从键盘输入数据到结构体中去那如果不从键盘中输入而是从字符串输入呢只需要使用sscanf所有参数前面加上个str就行了。
sscanf(str, %d %lf %s, s.i, s.d, s.arr);大功告成。你还可以把结构体中的数据打印出来
printf(%d %lf %s\n, s.i, s.d, s.arr);输出结果和上面讲解sprintf函数时举的例子的输出是一样的。
总结
sprintf和sscanf负责将字符串和格式化数据相互转换。sprintf相当于本来是printf把格式化数据输出到屏幕上现在是输出到一个字符串中也就是把格式化数据转换成字符串。sscanf相当于本来是scanf从键盘中输入格式化数据现在是从一个字符串中输入也就是把字符串转换成格式化数据。sprintf和sscanf的参数与printf和scanf的参数的区别是最前面多了个char*类型的指针也就是指向字符串的指针。
感谢大家的阅读