OpenHarmony API-printf() 格式化输出字符串

介绍

格式化输出字符串

定义

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);

注意事项

  1. 头文件依赖:必须包含 <stdio.h>,否则会提示函数未定义。
  2. 输出设备:在嵌入式设备(如开发板)中,printf() 的输出通常通过串口(UART)发送到电脑终端,需确保串口调试工具(如 MobaXterm、Putty)已正确连接。
  3. 性能影响:printf() 是阻塞式输出,频繁调用可能影响程序实时性,调试完成后可酌情删除或注释。
  4. 格式匹配:占位符类型必须与参数类型一致(如 %d 对应整数,%f 对应浮点数),否则会输出乱码或导致程序异常。

与其他输出函数的区别

  • puts():仅输出字符串(自动添加换行符),不支持格式化,如 puts("Hello OpenHarmony");。
  • putchar():仅输出单个字符,如 putchar('A');。

printf() 因支持格式化输出,功能最灵活,是 OpenHarmony 开发中调试和信息输出的首选工具。


原文出处:/show_1GW1wJHVmAqc.html