ошибка c2109: нижний индекс требует массив или указатель типа 5

Я столкнулся с небольшой проблемой, связанной с циклом for и массивом, и я надеюсь, что смогу получить некоторую помощь. В первой функции использование цикла for для вызова каждого значения функции работает просто отлично. Тем не менее, во второй функции я получаю сообщение об ошибке из Visual Studio о том, что «индекс требует массив или тип указателя». Что я делаю не так здесь, что вызывает эту ошибку?

Целью этой программы является поиск в текстовом файле книг, пропуск строк между записями, выяснение, сколько записей в файле соответствует и где они находятся, и распечатка деталей каждой записи.

void bookSearch(string id) {
ifstream fbooks;

string item = " ", entry = " ";

int resultLocation[30];

int searchType = 0;

fbooks.open("books.txt");

cout << "Welcome to the Book Search System, " << id << ".\n"<< "What do you wish to search the registry by?\n"<< "1. ISBN Number\n" << "2. Author\n" << "3. Title\n";

while (searchType<1 || searchType>3) {
cin >> searchType;

if (searchType<1 || searchType>3) {
displayMessage(0);

}
}

getline(cin, item);

for (int x = 0; x <= 30; x++) {
for (int y = 0; y < searchType; y++)
getline(fbooks, entry);

if (entry == item)
resultLocation[x] = 1;
else
resultLocation[x] = 0;

for (int z = 0; z < 5; z++)
getline(fbooks, entry);
}

resultPrint(resultLocation, id);
}void resultPrint(int resultLocation, string id){
int resultNum = 0;

string entry = "";

ifstream fbooks;

fbooks.open("books.txt");

for (int a = 0; a <= 30; a++) {
if (resultLocation == 1)
resultNum++;
}

if (resultNum > 0) {
cout << endl << "There are " << resultNum << " entries in the database matching that criteria.\n";

for (int a = 0; a <= 30; a++){
if (resultLocation[a] == 1) { //The a in this line is marked with the error
for (int b = 0; b <= 2; b++) {
getline(fbooks, entry);
cout << entry;
}
}
}
}

else
cout << endl << "There are no entries in the database matching that criteria.\n";
}

0

Решение

resultLocation является целым числом, поэтому вы не можете использовать operator[] на нем (кроме первого «указателя»). Похоже, вы хотели создать массив:

void resultPrint(int resultLocation[], string id);
0

Другие решения


По вопросам рекламы [email protected]