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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 5.00
Alex90
17 / 17 / 1
Регистрация: 30.01.2009
Сообщений: 103
23.02.2009, 19:23     Не запускается програма с seekg #1
У меня возникает проблема с использованием 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");
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2009, 19:23     Не запускается програма с seekg
Посмотрите здесь:

Какие различия у функций seekg и seekp для работы с файлами? C++
Програма С++ C++
C++ Разница между seekg() и seekp()
Програма C++
програма на С++ C++
методы seekg и seekp C++
C++ Как работает команда seekg?
Обработка файлов. Функция seekg(); C++
seekg() не срабатывает по окончанию файла C++
C++ Функция seekg
C++ Различия в использовании seekg и seekp при работе с fstream
C++ Почему clear необходимо использовать до seekg?

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

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

Добавлено через 13 минут 45 секунд
По поводу второго - вероятно, та же проблема - после установки курсора чтения в конец файла, он уже никуда не перемещается.
Alex90
17 / 17 / 1
Регистрация: 30.01.2009
Сообщений: 103
24.02.2009, 01:52  [ТС]     Не запускается програма с seekg #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);
но блин как прогнать курсор но файлу?
Patio
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 1
19.01.2016, 04:44     Не запускается програма с seekg #4
seekg() не срабатывает по окончанию файла
Yandex
Объявления
19.01.2016, 04:44     Не запускается програма с seekg
Ответ Создать тему
Опции темы

Текущее время: 10:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru