Я запускаю следующий код в настройке Xcode для проекта iOS и получаю EXC_BAD_ACCESS (код = 2, адрес 0x30) на втором fscanf
команда то есть fscanf(fid, "%d", &fIndex);
в самой первой итерации, то есть с j = 0
;
char word[wordLength]; // wordlength is set to 4
int numFiles = 0;
int fIndex = 0;
// create the word-fileIndex mapping
for(long i = 0; i < numWords; i++)
{
fscanf(fid, "%s%d", word, &numFiles);
vector<int> indexList(numFiles,0);
for(int j = 0; j < numFiles; j++)
{
fscanf(fid, "%d", &fIndex);
indexList[j] = fIndex;
}
wordIndexMap[word] = indexList;
}
Однако только для тестирования я добавил еще одно значение для сканирования в первом fscanf
как это:
fscanf(fid, "%s%d%d", word, &numFiles, &fIndex);
И он работал нормально и считал правильное значение из файла.
Может ли кто-нибудь просветить меня, что здесь происходит?
Мой входной файл выглядит так:
abcd num_Index index1 index2 ….
например
1234 2 14 15
1235 3 5 2 6
1111 1 1
Я думаю, что вы должны установить wordLength
до более чем 4, потому что вам нужно включить трейлинг '\0'
, В любом случае, вы должны быть осторожны при чтении вводимых данных и ограничивать количество символов, которые вы читаете.
Других решений пока нет …