Ошибка сегментации в терминале, но не на koding.com
Я пишу программу на C, и она имеет дело с довольно большими файлами (~4MB .txt файлы). Программа открывает большой файл и разбивает его на кучу маленьких файлов, прежде чем тестировать каждый из маленьких файлов. Я написал функцию, которая позже открывает эти файлы, тестирует, чтобы убедиться, что весь раздел был скопирован, и возвращает 1, если раздел был скопирован неэффективно (другая ошибка, которая возникает у меня в том, что иногда она копирует только первые 2 слова. раздела). Когда я компилирую и запускаю свою программу через koding.com (который использует компилятор gcc), она отлично работает для всех тестовых файлов. Однако, когда я пытаюсь запустить его локально на своем MacBook через терминал (я запускаю Lion, и у меня включена версия gcc в Xcode 4.6.3), он выдает мне "Ошибка сегментации: 11" и завершает работу, но только когда я использую в некоторых файлах (например, файл 3,9 МБ дает ошибку по умолчанию, а файл 2,7 МБ - нет).
Вот как эта функция называется:
for(i=1;tableArray[i].count!=0;i++)
{
strcpy(word,tableArray[i].shortName);
strcat(word,".txt");
if(fopen(word, "r")!=NULL)
{
testFile = fopen(word, "r");
problems[i] = checkFile(testFile);
fclose(testFile);
}
}
А вот и функция:
int checkFile(FILE *file)
{
char word[NAMELEN];
int count = 0;
while(fscanf(file, "%s", word)!=EOF)
count++;
if(count<3)
return(1);
else return(0);
}
Любое понимание очень ценится. Спасибо!