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

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

Войти
Регистрация
Восстановить пароль
 
fakeplayer
0 / 0 / 0
Регистрация: 11.04.2014
Сообщений: 5
#1

Чтение из файла C++ - C++

11.04.2014, 22:23. Просмотров 399. Ответов 6
Метки нет (Все метки)

ввожу код из книги демидовича на тему вывода данных из файла на экран а он не рабочий, помогите пожалуйста
я сделал свой код но все равно ошибка похожая, вроде чтото не правильно со строкой, где нужно прочитать из файла.
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
31
32
33
34
35
36
37
38
39
40
41
42
#include<locale.h>
#include <stdio.h>
#include<iostream>
using namespace std;
 
struct abitur
{ char name[32];                       
  int mark[3];       
};
 
void main()
 
{setlocale(LC_ALL, "Russian");
    struct abitur inf;
  int a;
  FILE *f;
 
  if(!(f=fopen("inf.dat","w+")))
  { cout<<"Ошибка создания файла\n"; return ; }
  for(;;)
  { cout<<"Введите ФИО (пустая строка -- конец списка): ";
    fflush(stdin);                    
    gets(inf.name);
    if(!inf.name[0]) break;
    cout<<"\n Введите три оценки, полученные на экзаменах: ";
    cin>>inf.mark[0]>>inf.mark[1]>>inf.mark[2];
    fwrite(&inf, 1,sizeof(inf), f); 
  }
 
  fclose(f);
 
  cout<<"\nСписок абитуриентов:\n";
  if(!(f=fopen("inf.dat","r")))
  {  cout<<"Ошибка создания файла\n"; return ;}
  while(1)
  {   if(sizeof(inf) == fread(&inf, sizeof(inf), 1,f)) 
      break;   /* Если не удалось прочитать необходимое 
                  количество байт, то заканчиваем чтение */
      cout<<inf.name<<inf.mark[0]<<inf.mark[1]<<inf.mark[2]<<endl;
  }
  fclose(f);
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 22:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из файла C++ (C++):

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

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

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

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

6
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,552
12.04.2014, 00:24 #2
Подробнее, что там не получается, какая ошибка, что записывается\вводится... ~ ~
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
12.04.2014, 03:56 #3
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<locale.h>
#include <stdio.h>
#include<iostream>
 
using namespace std;
 
#define MAX_MAME_LEN             (32)
#define MAX_ESIMATE_CNT          (3)
 
struct   Abiturientis
{ 
   char     pszName  [MAX_MAME_LEN + 1];                       
   int      iEstimate[MAX_ESIMATE_CNT];       
};
 
int main(int argc,char** argv)
{
   setlocale(LC_ALL,"Russian");
   
   Abiturientis      Info;
 
   memset(&Info,0,sizeof(Abiturientis));
   
   FILE*    pIn = fopen("inf.dat","wt+");
 
   if (!pIn)
   { 
      cout << "Ошибка создания файла\n"; 
      return 0; 
   }
 
   while (true)
   { 
      fflush(stdin);                    
 
      cout << "Введите ФИО (пустая строка -- конец списка): ";
 
      gets(Info.pszName);
      
      if (!*Info.pszName) 
      {
         break;
      }
 
      cout << "\n Введите три оценки, полученные на экзаменах: ";
    
      cin >> Info.iEstimate[0] >> Info.iEstimate[1] >> Info.iEstimate[2];
 
      fwrite(&Info,1,sizeof(Info),pIn); 
   }
    
   fclose(pIn);
   pIn = NULL;
 
   cout << "\nСписок абитуриентов:\n";
   
   pIn = fopen("inf.dat","rt");
 
   if (!pIn)
   {  
      cout << "Ошибка создания файла\n"; 
      return 0;
   }
 
   while (true)
   {   
      if (fread(&Info,1,sizeof(Info),pIn) != sizeof(Info)) 
      {
         // Если не удалось прочитать необходимое количество байт, то заканчиваем чтение
         break;   
      }
         
      cout << Info.pszName << Info.iEstimate[0] << Info.iEstimate[1] << Info.iEstimate[2] << endl;
   }
     
   fclose(pIn);
 
   return 0; 
}
1
Миниатюры
Чтение из файла C++  
fakeplayer
0 / 0 / 0
Регистрация: 11.04.2014
Сообщений: 5
12.04.2014, 17:27  [ТС] #4
Цитата Сообщение от Izual Посмотреть сообщение
Подробнее, что там не получается, какая ошибка, что записывается\вводится... ~ ~
программа завершается после break, данные в массив сохраняются но при выводе из файла, дальше оператора break не выходит, то есть вообще из файла не выводится, а пример взят из книги.
а вводить например 3 учеников(qqq 1 1 1; www 2 2 2; eee 3 3 3) и оценки каждого
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.04.2014, 00:48 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от fakeplayer Посмотреть сообщение
но при выводе из файла, дальше оператора break не выходит,
C++
1
2
if(sizeof(inf) != (fread(&inf, 1, sizeof(inf), f))) 
    break;
1
fakeplayer
0 / 0 / 0
Регистрация: 11.04.2014
Сообщений: 5
13.04.2014, 20:26  [ТС] #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Сообщение от fakeplayer Посмотреть сообщение
но при выводе из файла, дальше оператора break не выходит,
Код C++
1
2
if(sizeof(inf) != (fread(&inf, 1, sizeof(inf), f)))
break;
да, это я забыл исправить, но все равно не выводит ответ, при == циклится, а при != ничего не происходит

Добавлено через 20 минут
if(sizeof(inf) != fread(&inf, 1,sizeof(inf),f)
над было всего лишь поменять местами 1 и sizeof
тема закрыта, всем спасибо,
еще вопрос, зачем использовать memset?
0
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,552
15.04.2014, 02:43 #7
Вот

Цитата Сообщение от Yandex:'memset C++ MSDN'
Устанавливает буферов до указанного символа.
Тоесть обнуляет /n символ наверно.
0
15.04.2014, 02:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 02:43
Привет! Вот еще темы с ответами:

Чтение из файла - C++
Извините, опять этот вопрос, но почему не работает программа? Нужно считать из файла цифры и записать их в матрицу и поменять минимальные и...

Чтение из файла - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; //такая струтура для хранения Имени студента, группы (например ММ-263...

чтение файла - C++
в книге ifstream aa; aa.open(............); нам объясняли: ifstream open(''lala.txt,ios::....); точно не помню

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


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

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

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