Форум программистов, компьютерный форум CyberForum.ru

Неожиданное окончание файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конвертер (калькулятор) http://www.cyberforum.ru/cpp-beginners/thread92838.html
Задача состоит в том, что на форме есть четыри Эдита и баттон,надо разработать программу которая бы конвертировала числа из десятичной системы счисления в двоичную, восьмеричную и шестнадцатиричную. В первом эдите вводиться десятичное число, жмется баттон и в остальных эдитах высвечиваються конвертированные в соответственные системы счисления результаты.
C++ С++ Одномерные массивы Парни помогите решить задачу в С++ Вот условие: Задана последовательность N вещественных чисел. Вычислить Si=корень квадратный(Xi-M)^2/N-1 где М — среднее арифметическое данной последовательности. http://www.cyberforum.ru/cpp-beginners/thread92835.html
Напечатать элементы массива в виде двух параллельных столбцов C++
Выручайте, помогите решить задания... Самостоятельная работа №6 Задачи по теме «Одномерные массивы» 1.В одномерном массиве размещены: в первых элементах — значения аргумента, в следующих — соответствующие им значения функции. Напечатать элементы этого массива в виде двух параллельных столбцов (аргумент и значения функции). 2.Дан целочисленный массив с количеством элементов п. Сжать массив,...
C++ Указать те слова, которые содержат хотя бы одну букву k
Помогите решить задачу что-бы зачёт получить Дана строка. Указать те слова, которые содержат хотя бы одну букву k.
C++ Одномерные массивы http://www.cyberforum.ru/cpp-beginners/thread92819.html
Помоги решить задачу чтоб. зачёт получить В одномерном массиве размещены: в первых элементах — значения аргумента, в следующих — соответствующие им значения функции. Напечатать элементы этого массива в виде двух параллельных столбцов (аргумент и значения функции).
C++ В одно мерном массиве посчитать сумму элементов Помогите пожалуйста... Задача №8 Требования: 1. Подготовить текстовый файл с входными данными в редакторе. 2. Составить алгоритм программы (Не обезательно) 3. Разбить программу на функции ввода, обработки и вывода. 4. Входные данные прочитать из файла. 5. Выполнить обработку в соответствии с заданием. 6. Вывести результаты на экран и дописать в файл. подробнее

Показать сообщение отдельно
akrosing
1 / 1 / 0
Регистрация: 08.01.2009
Сообщений: 6
05.02.2010, 17:45     Неожиданное окончание файла
Требуется организовать побитовое чтение файла (формат .dat) и компоновка (перестановка 2-х бит) в массив. Написал код. Возникла проблема: происходит неожиданный конец файла (eof) при 85 кадре (1 кадр = чтение 2-х бит). При чтении того же самого файла и вместо fin >> x1 использовать fin.get(x1) конец происходит на 83 кадре. Причём эти прочтённые кадры соответсвуют действительности( проверенно при чтении файла матлабом и маткадом) - всего кадров около 1000.
При чтении другого файла (той же размерности и структуре) неожиданный конец файла может возникать при других кадрах (к примеру 5-ый).
При чтении простого файла .txt, содержащего массив цифр - всё ок.
В чём может быть проблема?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (OpenDialog1->Execute())
{
    Edit1->Text = OpenDialog1->FileName;
    ifstream fin(OpenDialog1->FileName.c_str());
    int i=0;                      // счётчик, определяет номер кадра (1 кадр - 2 бита)
    short int str[100000];  // массив куда будут записываться значения из файла
 
    while ( (!fin.eof() ) & (i<100000))
    {
       char x1 , x2;
       fin >> x1; fin >> x2 ;  // запись последовательных 2-х битов х1 и х2.
 
      short int p2 = x2<<8 ;                 // меняем биты местами: х1 становится старшим битом
      unsigned short int p1 = x1 & 255 ; // х2 становится младшим битом
// в результате получили код аскии целого 4-х значного числа
// (Это известно из условия - информация 100% правильная)
 
      str[i] = int(p1+p2);                     // записываем результат в конечный массив
      i++;
    }
 
    fin.close();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru