string guessingWord[89];
fstream wordList;
wordList.open("wordlist.txt");
for (int i = 0; i < 90; ++i){
wordList >> guessingWord[i];
}
wordList.close();
此代码有什么问题,当我尝试测试此代码时,会显示Access违规写入位置。
答案 0 :(得分:5)
声明一个大小为89的数组意味着有89个元素,那些有效的指标是0-88。你的循环从0到89;因此,你正在写过数组的末尾。
那就是说,你真的应该使用vector<string>
:
vector<string> guessingWord;
string temp;
while ( wordList >> temp )
guessingWord.push_back( temp );
答案 1 :(得分:0)
数组guessingWord只有89个元素,其索引范围为[0,88]
string guessingWord[89];
所以这个循环无效
for (int i = 0; i < 90; ++i){
wordList >> guessingWord[i];
}
应该有
for (int i = 0; i < 89; ++i){
wordList >> guessingWord[i];
}
为避免此类错误,请始终使用符号名称表示幻数。定义
就足够了size_t N = 89;
string guessingWord[N];
//...
for (int i = 0; i < N; ++i){
wordList >> guessingWord[i];
}