0

只是想知道这是否可能,

当按下输入按钮时,我想要一个等于字符的字符串输入。

所以在顶部我定义了 WLAN_SSID

#define WLAN_SSID       "abc"

我还初始化了根据设备上按下的按钮而变化的输入。

String input = "abcdefg";

在我的代码下面的某个地方:

char *ssid = WLAN_SSID;  

我需要 *ssid 保持为 char,但无论如何让它等于字符串“输入”?

谢谢

4

2 回答 2

1

您当然不能分配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);
于 2013-12-14T19:45:00.703 回答
0

首先,您需要为char[].

ssid = malloc(sizeof(char) * (input.length() + 1));

然后您需要使用String::toCharArray()将字符复制到缓冲区中。

input.toCharArray(ssid, input.length());

然后稍后,当您完成 时ssid,您需要丢弃为它分配的内存。

free(ssid);

您可能还需要ssid在重用它之前丢弃它的原始值,但我对 Arduino 的了解还不够,无法确定。

于 2013-12-14T19:39:38.843 回答