3、Air720SL模块Luat开发:实现用"Printf"把文字格式化以后直接输出
2020-03-01 05:14
429 查看
目录
一、前言
在我的第二篇博文中
2、Air720SL模块Luat开发:第一个Luat的Hello World(在目录出可找到入口)我们用了一下
在Lua语法中print函数可以接收任意字符串实现输出字符到日志
1、可以直接输出数字print(123)运行结果如下
2、也可以直接字符print("abc")运行结果如下
3、还可以混合输出print("abc"..123)运行结果如下
但是
如果我要输出一个可变化的字符串,不是说
比如我要输出下面这样一段字符串,其中标红的是需要随时改变的变量
HelloTom!my name is:YXCN,I am30years old now
local other="Tom" local name="YXCN" local age=30 print("Hello "..other.."!".."my name is:"..name..",".."I am "..age.." years old now")
用
..组织字符串连接,一共用了八个字符串连接符,用了六对双引号
这个例子还好只有三个变量,就已经显得有点复杂,如果变量一多,想都不敢想。
这样写法阅读起来也是及其困难的,无法直接得出变量是什么类型的,可能是字符串,也可能是数字,还得回去看变量到底是什么值,这节课我们就一起学习一下怎么用Lua实现C语言的Printf格式化输出的功能
二、Printf格式化函数输出实现
在Lua里面没有
printf函数,直接写会报错
这里我们需要自己实现一下,代码如下
local function printf(...) print(string.format(...)) end
现在我们一起来试一下Hello
Tom!my name is:YXCN,I am30years old now输出有多简单
local function printf(...) print(string.format(...)) end local other="Tom" local name="YXCN" local age=30 printf("Hello %s ! my name is: %s , I am %d years old now",other,name,age)
对比两行
printf的输出函数,printf函数格式化输出只用的一对双引号,结构清晰,能从语句中直接得出,需要输出的是什么格式的数据,很显然第一个转义码%s和第二个转义码%s代表的是字符串,第三个转义码%d代表的是数字
在Lua软件上直接输出结果如下,说明语法上是行得通的
这里给出Lua支持所有的转义码
- %c - 接受一个数字, 并将其转化为ASCII码表中对应的字符
- %d, %i - 接受一个数字并将其转化为有符号的整数格式
- %o - 接受一个数字并将其转化为八进制数格式
- %u - 接受一个数字并将其转化为无符号整数格式
- %x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母
- %X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母
- %e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e
- %E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E
- %f - 接受一个数字并将其转化为浮点数格式
- %g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式
- %q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
- %s - 接受一个字符串并按照给定的参数格式化该字符串
下面我们将程序下载到开发板验证
三、下载程序到Air720Sl开发板
这里我们直接贴出全部代码
--必须在这个位置定义PROJECT和VERSION变量 --PROJECT:ascii string类型,可以随便定义,只要不使用,就行 --VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义 PROJECT = "LED" VERSION = "0.0.1" require "sys" --加载日志功能模块,并且设置日志输出等级 --如果关闭调用log模块接口输出的日志,等级设置为log.LOG_SILENT即可 require "log" LOG_LEVEL = log.LOGLEVEL_TRACE local function printf(...) print(string.format(...)) end local function user_main() local other="Tom" local name="YXCN" local age=30 while true do printf("Hello %s ! my name is: %s , I am %d years old now",other,name,age) age = age + 1--一秒加一岁 sys.wait(1000) end end --启动系统框架 sys.taskInit(user_main) sys.init(0, 0) sys.run()
下载程序后运行结果如下,一秒加一岁,现在已经240多岁了,哈哈
不会下载的点击这里,进去查看我的第二篇博文2、Air720SL模块Luat开发:第一个Luat的Hello World里面讲了怎么下载
这里只是我的学习笔记,拿出来给大家分享,欢迎大家批评指正,本篇教程到此结束
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 4、Air720SL模块Luat开发:用GPIO输出功能实现一个简单的LED灯闪烁
- C语言整数类型及printf格式化输出问题总结复习及进制转换的简单实现
- Android项目开发笔记之Material日历模块实现(支持滑动or直接选择年月)
- nginx 开发第三方模块的时调式日志的方法(终端printf输出日志)
- Linux下彩色进度条的实现(printf的格式化输出成彩色的,在linux下才有效)
- 嵌入式固件开发之五——直接操作STM32寄存器的UART测试程序(实现printf)和使用VSPD仿真
- 6、Air720SL模块Luat开发:又是一种新的外设之ADC模数转换,现在我们可以采集模拟量数据了
- iOS 使用XMPP框架开发IM聊天模块,实现简单的文字聊天
- 5、Air720SL模块Luat开发:GPIO输入常见的两种使用方法及其优劣性
- VC下在对话框上直接输入字母或文字的实现 (Input word on CDialog directly)
- 批处理+VBS脚本实现纯文本代码格式化输出
- 嵌入式ARM处理器的通信模块实现-龙人嵌入式开发
- 应用 printf 语句格式化输出字符
- C语言中printf格式化输出函数
- SAP应用界面开发:5)Report List报表开发-实现Report的格式分页输出(6)
- WinAPI: wvsprintf 与 wsprintf - Windows 的格式化输出函数
- Linux C 编程 实现彩色文字输出
- printf格式化输出
- printf使用%s直接输出string类型,Program received signal SIGILL, Illegal instruction
- Python 字符串格式化输出(format/printf)