С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 5.00
Alex90
20 / 20 / 1
Регистрация: 30.01.2009
Сообщений: 103
#1

Не запускается програма с seekg - C++

23.02.2009, 19:23. Просмотров 6636. Ответов 3
Метки нет (Все метки)

У меня возникает проблема с использованием seekg с этим кодом программа не запускается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// load a file into memory
#include <iostream>
#include <fstream>
using namespace std;
 
int main () {
  int length;
  char * buffer;
 
  ifstream is;
  is.open ("test.txt", ios::binary );
 
  // get length of file:
  is.seekg (0, ios::end);
  length = is.tellg();
  is.seekg (0, ios::beg);
 
  // allocate memory:
  buffer = new char [length];
 
  // read data as a block:
  is.read (buffer,length);
 
  is.close();
 
  cout.write (buffer,length);
 
  delete[] buffer;
  return 0;
}
а вот эта часть кода совсем не работает вызывая фатал в другой программке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    
    
  person pers;                  // создать объект person 
  ifstream infile;              // создать входной файл
  infile.open ("GROUP.DAT",ios::in|ios::binary); // открыть
                                                // файл
  infile.seekg(0, ios::end);    // установить указатель на 0
                                // байт от конца файла
  int endposition = infile.tellg();      // найти позицию
  int n = endposition / sizeof(person);  // число человек
  printf ("\nIn file ");
  printf ("%d", n); 
  printf (" man");
  printf ("\nEnter # person: ");
  outfile.open ("test.txt", ofstream::out | ofstream::app);
  outfile << "This sentence is appended to the file content\n";
  outfile.close();
  scanf ("%d", n);
  int position = (n-1) * sizeof(person); // умножить размер
                         // данных под персону на число персон
  infile.seekg(position);               // число байт от начала
                         // прочитать одну персону
  infile.read( reinterpret_cast<char*>(&pers), sizeof(pers) );
  pers.showData();                      //вывести одну персону
  printf ("\n");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2009, 19:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не запускается програма с seekg (C++):

Функция seekg - C++
Не могу понять как применить функцию seekg так, чтобы она ставила указатель на k-ую строку массива. помогите исправить пожалуйста, место...

методы seekg и seekp - C++
void my_work(const char *str, double KV) throw (myError) { fstream File(str, ios::in | ios::out | ios::binary); if(File.is_open()) ...

Как работает команда seekg? - C++
Всем привет!!! Объясните пожалуйста на примере как работает функция seekg? пробовал искать в поиске, о ней но ничего дельного и ясного...

seekg() не срабатывает по окончанию файла - C++
почему когда чтение доходит до третей записи (в файле всего три стройчки с int, char и int величинами) то метод seekg(); опять не...

Функция seekg() как работает? - C++
Надо считывать из бинарного файла числа, которые стоят на четных позициях. Надо использовать seekg(), но как она работает, можете...

Обработка файлов. Функция seekg(); - C++
ifstream fileReader(&quot;sdf.txt&quot;); int a; while (fileReader &gt;&gt; a) { ...; } А теперь, чтобы повторить данный while нужно написать ...

3
Шерсть-На-Носу
41 / 41 / 1
Регистрация: 30.01.2009
Сообщений: 168
23.02.2009, 22:49 #2
По поводу seekg - была у меня когда-то такая же проблема при определении длины файла таким способом. На MS Visual Studio 6.0. В чем дело, так и не понял... Разбираться было некогда, поэтому я вместо seekg (0, ios::beg); просто закрыл файл, а потом снова его открыл.

Добавлено через 13 минут 45 секунд
По поводу второго - вероятно, та же проблема - после установки курсора чтения в конец файла, он уже никуда не перемещается.
0
Alex90
20 / 20 / 1
Регистрация: 30.01.2009
Сообщений: 103
24.02.2009, 01:52  [ТС] #3
ну, у меня Dev-C++ c первым я разобрался, глупая ошибка с названием файла сделал опечатку в место test.txt получилось tesy.txt с этим я уже разобрался
а вот с вторым.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
person pers;                  
    ifstream infile;              
    ifstream outfile;
    infile.open ("GROUP.DAT",ios::in|ios::binary); 
    infile.seekg(0, ios::beg);//, ios::end);
    int endposition = infile.tellg(); 
    int n = endposition / sizeof(person);
    printf ("\nIn file ");
           printf ("%d", n); 
           printf (" man");
    printf ("\nEnter # person: ");
    outfile.open ("GROUP.DAT", ofstream::out | ofstream::app);
//----------Где-то здесь ошибка---
           scanf ("%d", n); 
           int position = (n-1) * sizeof(person);
    infile.seekg(position); 
    infile.read( reinterpret_cast<char*>(&pers), sizeof(pers) );
    pers.showData();                     
    printf ("\n");
//---------------------------------
Добавлено через 2 часа 54 минуты 38 секунд
фатал нашел был здесь
C++
1
    scanf ("%d", &n);
но блин как прогнать курсор но файлу?
0
Patio
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 1
19.01.2016, 04:44 #4
seekg() не срабатывает по окончанию файла
0
19.01.2016, 04:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2016, 04:44
Привет! Вот еще темы с ответами:

Разница между seekg() и seekp() - C++
В чём же разница? Вот допустим открыл я файл: fstream file(&quot;trans.dat&quot;,ios::out|ios::in|ios::binary); Какая разница между...

Почему clear необходимо использовать до seekg? - C++
...и нельзя сразу после? Долго не могла решить проблему пока не наткнулась на тему где f.clear() шел до f.seekg(). И мне стало интересно))...

Некорректная установка seekg и seekp в многострочном файле - C++
Добрый день! Не могу разобраться с мракобесием, которое начинает твориться с seekg и seekp, если в файле появляется переход на следующую...

Различия в использовании seekg и seekp при работе с fstream - C++
Если я использую класс fstream, тогда для перемещения внутри файла без разницы какую функцию использовать (seekg() и seekp())??? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.