1

我正在尝试填充一个我希望是“动态”的数组,以便我可以在运行时根据需要向其中输入尽可能多的条目。但是,我认为指针NthTeam指向的数组没有填充:

int* NthTeam = NULL;    

NthTeam = (int*)realloc(NthTeam,(playerCounter*STND_NO_GAMES)*sizeof(int));

// loops through each player's standard number of games
for (int i = 1; i <= STND_NO_GAMES; i++) {
    //input the score into the remalloced array
    cout << "Enter player " << playerCounter << "'s score " << i << ": ";
    cin >> inputValue;
    NthTeam[((playerCounter-1)*STND_NO_GAMES+(i-1)))] = SanityCheck(inputValue);
 }

但是,当我cin >> NthTeam[(playerCounter - 1) * STND_NO_GAMES + (i - 1)]在我的代码中使用它时,它确实有效......填充了数组。

从这个链接我被引导相信你可以像使用常规数组一样使用 NthTeam,但我不认为这就是这里发生的事情。我不能只使用的原因cin是因为我应该在允许输入数组之前对输入进行有效性检查。

我很迷失谷歌搜索答案;对于我现在所处的位置来说,其中很多都太复杂了。

4

1 回答 1

0

假设您使用 C++ 编程,标准库可以提供帮助。例如:std::vector。这是一个脑残的修改,一定要#include <vector>

std::vector<int> NthTeam;    

// loop through each player's standard number of games
// inputting the score into the vector

for (int i = 1; i <= STND_NO_GAMES; i++) {
    cout << "Enter player " << playerCounter << "'s score " << i << ": ";
    cin >> inputValue;
    NthTeam.push_back(SanityCheck(inputValue));
}

您确实需要考虑输入无效输入时会发生什么(例如输入“番茄”的分数)。考虑这将如何影响 的错误状态cin,如果您在最后一次尝试产生错误时尝试从中读取另一个整数会做什么,以及inputValue会是什么。

可能您仍然需要“SanityCheck”......但它可能理所当然地认为它只需要检查整数。

于 2012-04-19T19:51:22.927 回答