介绍
格式化输出字符串
定义
int printf(const char *format, ...);
参数:
format:格式化字符串,包含普通文本和格式占位符(如%d、%s等)。...:可变参数,与格式占位符一一对应,是需要输出的具体数据(如变量、常量)。- 返回值:成功时返回输出的字符总数(包括换行符等),失败时返回负数。
头文件
#include <stdio.h>
说明
在 C 语言及 OpenHarmony 开发中,printf() 是一个用于格式化输出字符串的标准库函数,主要功能是将指定的文本、变量值等输出到标准输出设备(通常是控制台、终端或调试窗口),是程序调试和信息输出的常用工具。
核心用法:格式占位符
printf() 的核心是通过格式占位符将变量值嵌入到输出文本中,常用占位符以 % 开头,常见类型如下:
| 占位符 | 含义 | 示例 | 输出 |
|---|---|---|---|
%d |
输出十进制整数 | printf("数值:%d", 123); |
数值:123 |
%s |
输出字符串 | printf("名称:%s", "OpenHarmony"); |
名称:OpenHarmony |
%c |
输出单个字符 | printf("字符:%c", 'A'); |
字符:A |
%f |
输出浮点数(默认6位小数) | printf("温度:%f℃", 25.5); |
温度:25.500000℃ |
%x |
输出十六进制整数(小写) | printf("十六进制:%x", 255); |
十六进制:ff |
%% |
输出百分号本身 | printf("进度:50%%"); |
进度:50% |
在 OpenHarmony 开发中的典型应用
在 OpenHarmony 物联网设备开发(如 Hi3861 开发板)中,printf() 常用于调试信息输出,例如:
1. 输出 GPIO 操作状态
#include <stdio.h>
#include "gpio_if.h"
void GpioDebugExample(void) {
int ret;
// 配置GPIO9为输出模式
ret = GpioSetDir(WIFI_IOT_GPIO_IDX_9, WIFI_IOT_GPIO_DIR_OUT);
if (ret == 0) {
printf("GPIO9 配置为输出模式成功!\n");
// 控制电平并输出信息
GpioSetOutputVal(WIFI_IOT_GPIO_IDX_9, 1);
printf("GPIO9 输出高电平\n");
} else {
printf("GPIO9 配置失败,错误码:%d\n", ret);
}
}
2. 输出传感器数据
#include <stdio.h>
// 模拟读取温湿度传感器数据
void PrintSensorData(float temp, float humi) {
printf("环境监测:温度=%.1f℃,湿度=%.1f%%\n", temp, humi);
// 输出示例:环境监测:温度=23.5℃,湿度=60.2%
}
// 调用示例
PrintSensorData(23.5, 60.2);
注意事项
- 头文件依赖:必须包含
<stdio.h>,否则会提示函数未定义。 - 输出设备:在嵌入式设备(如开发板)中,
printf()的输出通常通过串口(UART)发送到电脑终端,需确保串口调试工具(如 MobaXterm、Putty)已正确连接。 - 性能影响:
printf()是阻塞式输出,频繁调用可能影响程序实时性,调试完成后可酌情删除或注释。 - 格式匹配:占位符类型必须与参数类型一致(如
%d对应整数,%f对应浮点数),否则会输出乱码或导致程序异常。
与其他输出函数的区别
puts():仅输出字符串(自动添加换行符),不支持格式化,如puts("Hello OpenHarmony");。putchar():仅输出单个字符,如putchar('A');。
printf() 因支持格式化输出,功能最灵活,是 OpenHarmony 开发中调试和信息输出的首选工具。