【发布时间】:2016-01-27 09:12:06
【问题描述】:
我创建了一个单元测试工具来测试我的程序。我希望它能够随机测试每次运行,但我不知道如何去做。这是我的想法,但我被困在下一步该怎么做,任何指导将不胜感激。
int main (void)
{
int testNumber = 1; //for testing
char carName[] = "";
double carCost = 0;
carName = carChosen (testNumber);
carCost = assessCost (carName); //assessCost takes in the car name and checks what cost of the car will be (error checking so only certain cars can be chosen)
return 0;
}
“testNumber”通常会随时间播种以创建从 1 到 15 的不同数字,但在这种情况下,它将是“1”用于测试。
这是我遇到的下一个问题。在这个函数中会有 15 个不同的汽车选项,它会根据随机创建的数字返回一个。
char carChosen (int randNum)
{
char carOne[] = "Honda";
char carTwo[] = "Ford";
if (randNum == 1)
{
return carOne; //local variables, not going to work...
}
else if (randNum == 2)
{
return carTwo; // Again, these return's are here to better represent what I'm trying to create but failing to do so..
}
}
我知道你不能返回局部变量,我能做些什么呢?
【问题讨论】:
-
您将返回值设置为
char,并尝试返回char[]。如果 randNum 不同于 1 & 2,你还需要返回一些东西 -
@Robolisk 您的 C++ 代码看起来像 C。如果确实是 C++,只需使用
std::string(并在main(void)中删除void)。 -
@Biffen 它是 C++,我刚刚开始熟悉它。我会研究一下这些对我有什么帮助,谢谢
-
@Thomas 我明白这一点,但我把它放在那里是因为我被卡住了,不知道还能做些什么来表达我的观点。 else return 应该有一些东西你是对的,我只是为了测试目的而使用它,但良好的实践表明我应该这样做。谢谢你的建议。
-
char carName[] = ""不是 C++ 字符串,它是一个以空字符结尾的字符数组,由单个字符(显然是空字符)组成。您可以更改此数组的内容,但由于它是作为单字符数组静态分配的,因此您唯一能做的就是更改该单字符(这显然会使其成为非空终止数组个字符)。简单来说,您需要阅读更多关于空终止(C 样式)字符串的内容。或者,如果您指定的语言确实是 C++,那么请改用std::string。