今天是2018年4月19日
是丙丙的第十二篇文章
最近看到超级丙发的笔记之后,我感到很焦虑,觉得自己必须也写一写笔记来记录一下,不然我怕过两个月之后,看之前的项目完全看不懂自己写的是什么东西,又要花费一天来回复记忆,囧!!!
我打算写一下自己在项目中用到的比较有用的知识点,通过在项目中使用这些知识点,提供一个具体的使用场景,来加深理解,也希望给大家带来一些借鉴。
今天我要介绍的是sprintf()和scanf()函数,首先先把官方的介绍摆上去,然后将我在项目中的应用摆出来。
sprintf()
头文件:stdio.h
函数功能:格式化字符串,将格式化的数据写入字符串中。
函数原型:intsprintf(char *buffer, const char *format, [argument]...)
参数:
(1)buffer:是char类型的指针,指向写入的字符串指针;
(2)format:格式化字符串,即在程序中想要的格式;
(3)argument:可选参数,可以为任意类型的数据;
函数返回值:buffer指向的字符串的长度;
sscanf()
头文件:stdio.h
函数功能:从字符串读取格式化输入。
函数原型:intsscanf(const char *str, const char *format, ...)
参数
(1)str:这是 C 字符串,是函数检索数据的源。
(2)format: 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符和format 说明符。
(3)附加参数:这个函数接受一系列的指针作为附加参数,每一个指针都指向一个对象,对象类型由 format 字符串中相应的 % 标签指定,参数与 % 标签的顺序相同。
返回值:
如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
在项目中的应用
最近在自己的项目中需要用到通讯协议,在Linux环境下利用C语言做开发,利用这两个函数提供了强大的便利,在客户端利用sprintf()来将自己的数据格式化为定长的字符串并进行打包,在服务器端利用sscanf()按照一定的解析规则将字符串中的数据解析出来并进行出来。
客户端编码代码如下:
代码介绍:将发送方的类型,数据的ID,本地收集的四项数据,控制命令等数据保存在结构体中,并将结构体中的各项数据利用sprintf()格式化成字符串保存在str字符数组中。
服务器端解码代码如下:
这次就仅仅将自己在项目过程中使用到的sprintf()和sscanf()一方面的应用罗列出来,方便自己以后回忆,不足的地方大家在网上都可以找到相应的例子,后期遇到了我再补上。
在此感谢一位不愿意透露姓名的网友勇哥投稿等我火了,我会给你稿费的。
领取专属 10元无门槛券
私享最新 技术干货