fscanf中的Exc_bad_access错误

时间:2013-10-30 15:18:55

标签: c++ objective-c c xcode5

我在iOS项目的Xcode设置中运行以下代码,并在第一个迭代本身的第二个fscanf命令即fscanf(fid, "%d", &fIndex);上获取EXC_BAD_ACCESS(代码= 2,地址0x30),即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 ....

e.g。

1234 2 14 15
1235 3 5 2 6
1111 1 1

1 个答案:

答案 0 :(得分:1)

我认为您应该将wordLength设置为4以上,因为您需要包含尾随'\0'。在任何情况下,在阅读这样的输入时都需要小心,并限制你正在阅读的字符数。