gpt4 book ai didi

c++ - 从 Arduino 中的字符数组数组中选择项目

转载 作者:行者123 更新时间:2023-12-04 08:19:24 27 4
gpt4 key购买 nike

我正在尝试编写一个函数来播放来自通过串行连接到 Arduino Nano 的 Adafuit 板的预定义轨道列表中的随机轨道。我已将轨道列表放在一个字符数组数组中,但很难让它从数组中选择一个项目。

char T00[20] = "T00     OGG";
char T01[20] = "T01 OGG";
char T02[20] = "T02 OGG";
char T03[20] = "T03 OGG";

char rndTracks[] = {T00,T01,T02,T03};

int l = sizeof(rndTracks) - 1;
int r = random(l);
Serial.println(rndTracks[r]);
char trk[20] = rndTracks[r];
Serial.println(trk);
if (!sfx.playTrack(trk) {
Serial.println("Failed to play track?");
}
这是错误:
error: array must be initialized with a brace-enclosed initializer   
char trk[20] = rndTracks[r];
有任何想法吗?

最佳答案

在这里,您似乎试图通过分配来复制字符串/数组。

char trk[20] = rndTracks[r];
这不适用于类似 C 的数组 char .
有多种方法可以进行您尝试的复制。例如。使用 C++ 字符串,或 strncpy() ...
但是您可能真正想要做的是简单地跳过复制并通过引用随机选择的数组 char 来输出。 .
要么直接:
Serial.println(rndTracks[r]);
或者,如果您出于某种原因需要(例如下一行的方便),
通过一个变量,它只存储选定的指针:
char* trk = rndTracks[r];

关于c++ - 从 Arduino 中的字符数组数组中选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65561102/

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