只是想知道这是否可能,
当按下输入按钮时,我想要一个等于字符的字符串输入。
所以在顶部我定义了 WLAN_SSID
#define WLAN_SSID "abc"
我还初始化了根据设备上按下的按钮而变化的输入。
String input = "abcdefg";
在我的代码下面的某个地方:
char *ssid = WLAN_SSID;
我需要 *ssid 保持为 char,但无论如何让它等于字符串“输入”?
谢谢
只是想知道这是否可能,
当按下输入按钮时,我想要一个等于字符的字符串输入。
所以在顶部我定义了 WLAN_SSID
#define WLAN_SSID "abc"
我还初始化了根据设备上按下的按钮而变化的输入。
String input = "abcdefg";
在我的代码下面的某个地方:
char *ssid = WLAN_SSID;
我需要 *ssid 保持为 char,但无论如何让它等于字符串“输入”?
谢谢
您当然不能分配WLAN_SSID
给 a char*
,因为字符串文字的类型char const[N]
(带有合适的N
)很乐意衰减为char const*
s 但拒绝分配给char*
s。如果您确实需要处理 a char*
,则需要分配足够的空间并将值复制到此内存中。当然,在更改它时,您还需要适当地释放内存。例如
char* make_ssid(char const* value) {
static std::unique_ptr<char[]> memory;
std::size_t n = strlen(value);
memory.reset(new char[n + 1]);
strncpy(memory.get(), value, n + 1);
return memory.get();
}
char* ssid = make_ssid(WLAN_SSID);
首先,您需要为char[]
.
ssid = malloc(sizeof(char) * (input.length() + 1));
然后您需要使用String::toCharArray()
将字符复制到缓冲区中。
input.toCharArray(ssid, input.length());
然后稍后,当您完成 时ssid
,您需要丢弃为它分配的内存。
free(ssid);
您可能还需要ssid
在重用它之前丢弃它的原始值,但我对 Arduino 的了解还不够,无法确定。