gpt4 book ai didi

c++ - 字符串格式替换为 snprintf 中字符中的值

转载 作者:行者123 更新时间:2023-11-30 16:48:14 27 4
gpt4 key购买 nike

我在基于 ESP8266 的 NodeMCU 中有以下功能代码:

  snprintf ( temp, 800,
"<html>\
<head>\
<meta http-equiv='refresh' content='25'/>\
<title>NodeMCU DHT11 Sensor \and Relay Board</title>\
<style>\
body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
li { margin: 10px 0;}\
</style>\
</head>\
<body>\
<h1>Hello from NodeMCU!</h1>\
<p>Temperature: %02d &#8451;<br>\
Humidity: %2d %<br></p><ol>\
<li><a href='/control?relay=5&state=%d'>Turn Relay 1 On\/Off</a>\
<li><a href='/control?relay=4&state=%d'>Turn Relay 2 On\/Off</a></ol>\
<p> Uptime: %02d:%02d:%02d </p>\
</body>\
</html>",
t, h, !digitalRead(5), !digitalRead(4), hr, min % 60, sec % 60
);

我希望能够根据来自 digitalRead(5) 的 pin 状态将文本 on 替换为 off,反之亦然。因此,我不必编写 Turn Relay 1 On/Off,而是应该使用 digitalRead(pinNum) 获取状态,并根据状态设置文本打开或关闭。

最佳答案

ternary (conditional) operator是你的 friend 吗?您可以将其视为内联 if 语句。语法如下所示

condition ? val1 : val2

表达式将根据条件产生结果。如果条件为真,它将产生val1,否则它将产生val2

您可以在 sprintf 的参数列表中使用它来根据引脚状态返回一个字符串。

snprintf(temp, 800, 
"... <li><a href='/control?relay=5&state=%d'>Turn Relay 1 %s</a><li> ... ",
!digitalRead(5), (digitalRead(5) ? "Off" : "On");

%s 是字符串的占位符,根据引脚 5 的状态,它将被替换为 "On""Off"

关于c++ - 字符串格式替换为 snprintf 中字符中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com