【发布时间】:2015-08-19 18:07:47
【问题描述】:
我试图从我的 Arduino 上的结构数组中输出一个随机元素。结构看起来像这样
struct questionStructure {
char question[7];
int answer;
};
我在循环中调用了一个方法,该方法包含一堆带有答案的问题,然后应该选择一个随机问题并将其显示在显示屏上。那个方法是这样的
bool questionIsShown = false;
void randomQuestion()
{
int random;
struct questionStructure problems[4];
char test[7];
strcpy(test, "49 x 27");
strcpy(problems[0].question, test);
problems[0].answer = 1323;
strcpy(test, "31 x 35");
strcpy(problems[1].question, test);
problems[1].answer = 1085;
strcpy(test, "47 x 37");
strcpy(problems[2].question, test);
problems[2].answer = 1739;
strcpy(test, "46 x 15");
strcpy(problems[3].question, test);
problems[3].answer = 690;
strcpy(test, "24 x 29");
strcpy(problems[4].question, test);
problems[4].answer = 696;
if(questionIsShown==false) {
random = rand() % 4 + 0;
lcd.setCursor(0,1);
lcd.print(problems[random].question);
questionIsShown=true;
}
我不确定我做错了什么,但即使不是上面的使用lcd.print(problems[0].question);,显示器也会显示来自结构数组的多个问题。例如,上面的显示显示49 x 27+X31 x 35
我做错了什么?
【问题讨论】:
-
一方面,您的
test数组不够长。它需要至少 8 个字符来包含终止 nulchar 的空间。您的question成员也是如此 -
我不知道有一个终止的 nulchar。更改
test和question成员的大小后,我确实得到了一些更可靠的输出。我认为这实际上可能是这里的问题。
标签: c arrays random struct arduino