Спасибо всем за ваш вклад и советы!
Дополнительно:
После тестирования и дальнейшей работы кажется, что отдельные вызовы FileReader успешны.Но многократный вызов FileReader (это могут быть отдельные версии FileReader) вызывает проблему.
End Add
Hello,
У меня естьочень необычная проблема [пожалуйста, прочтите это полностью: это важно] (компилятор Code :: Blocks, Windows Vista Home) [нет тиражируемого кода] с функциями чтения файлов C (fread, fgetc).Теперь, как правило, функции чтения файлов корректно загружают данные в самораспределяющуюся и самораспределяющуюся строку (и это не проблема строки), но это то место, где оно становится странным (и где квантовая физика подходит):
Оператор перехвата ошибок сообщает, что EOF произошел слишком рано (IE находится в разделе комментариев в начале загружаемого текстового файла).Распечатка строки [после ее загрузки] сообщает, что она действительно слишком короткая (24 символа) (но у нее достаточно места для ее размещения [~ 400] и нет проблем с выделением).Итератор цикла fgetc сообщает, что он завершается всего за 24 (файл имеет длину около 300 символов) с EOF: Это то место, где он идет странно :
Временная проверка Read -> _ base сообщаетцелые (~ 300) символы загружены - без EOF в 24. Озадачен, [учитывая, что это цикл fgetc] Я добавил printf для отображения каждого символа [как% d, чтобы я мог определить -1 EOF] на каждом шаге, поэтому ямог видеть, что он делает, и изменил его так, чтобы это был один символ.Он зацикливается, достигая отметки ~ 300 вместо 24 - но мгновенно зависает случайно.НО, когда я удалил printf, он снова завершился на 24 и был пойман ошибочным оператором.
Сводка : Итак, в основном: у меня есть ошибка, на которую влияет 'Эффект наблюдателя вне квантовой физики: когда я пытаюсь наблюдать символы, которые я получаю от fgetc через printf, проблема (раннее завершение EOF в 24) исчезает, но когда я прекращаю его просматривать, оператор catch-catch сообщает о досрочном завершении.1025 *
Более странно то, что это происходит не впервые.У Fread была похожая проблема, и я не смог выяснить почему, и заменил ее на цикл fgetc.
[Код не может быть предоставлен, так как база кода имеет размер 5 заголовков].
Фрагмент:
int X = 0;
int C = 0;
int I = 0;
while(Copy.Array[X] != EOF)
{
//Copy.Array[X] = fgetc(Read);
C = fgetc(Read);
Copy.Array[X] = C;
printf("%d %c\n",C,C); //Remove/add this as necessary
if(C == EOF){break;}
X++;
}
Примечание: разбив его на простейший формат, ошибка не воспроизводится.