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

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

Войти
Регистрация
Восстановить пароль
 
cybernetics
2 / 2 / 0
Регистрация: 10.04.2013
Сообщений: 42
#1

Некорректность работы программы при считывании текстовых данных с файла - C++

13.04.2013, 23:26. Просмотров 336. Ответов 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "stdafx.h"
#include "iostream"
#include <fstream>
#include <conio.h>
#include <string>
#include <locale.h>
 
using namespace std;
 
struct university
{
    string first_name;
    string second_name;
    string patronymic;
    string group;
    string dopusk;
    unsigned short mark;
    unsigned short kurs;
};
 
int main()
{
 
    setlocale(LC_ALL, "Rus");
    cout <<"=============================Вариант №1.========================================\n\n";
    cout << "=======В файле записана вся необходимая информация о студентах.=================\n\n";
    cout << "\nЧтобы вывести на экран ФИО студентов, недопущенных к сессии, нажмите 1...";
    cout << "\nЧтобы вывести на экран ФИО отличников, нажмите 2...";
    cout << "\nЕсли Вы хотите вывести на экран фамилии студентов с отчеством (по запросу), нажмите 3...";
    int i=0, n=0;
    //===================================================================================================
 
    string ss="123";
    
    FILE *f_in, *f_out;
    char *name1="D:\\ОНПУ\\info.txt";
    if ((f_in=fopen(name1, "r"))==NULL)
    {
        perror ("Ошибка в чтении файла.\nПроверьте его целостность и повторите попытку.\n");
    }
    else 
    { 
        fscanf (f_in, "%i", &n);    
        cout << endl << n<<endl;
        university *un = new university[n];
        while (!feof(f_in))
        {   
            if (feof(f_in)) break;
            fscanf (f_in, "%s", &un[i].first_name);
            /*
            fscanf (f_in, "%s", &un[i].second_name);
            fscanf (f_in, "%s", &un[i].patronymic);
            fscanf (f_in, "%s", &un[i].group);
            fscanf (f_in, "%s", &un[i].dopusk);
            fscanf (f_in, "%d", &un[i].mark);
            fscanf (f_in, "%d", &un[i].kurs);*/
            i++;
            
        }
 
    }
    //cout << un[1].first_name << endl;                     //некорректный вывод
    //cout << un[1].dopusk;
 
    //=====================================================================================================
    cout<<endl;
 
    fclose(f_in);
    /*
a1:
    cin>>n;
 
    switch (n)
    {
    case 1:
        {
 
        }
    case 2:
        {
 
        }
    case 3:
        {
 
        }
    default: 
        {
            cout << "Ошибка выбора операции. Повторите попытку!\n";
            goto a1;
        }
    }
 
    //=====================================================================================================
 
 
 
 
    */
    cout <<"\n\n\n\n\n\n";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2013, 23:26     Некорректность работы программы при считывании текстовых данных с файла
Посмотрите здесь:

Проверка правильности данных при считывании из файла - C++
Вопрос, есть ли что-то подобное cin.bad, но для считывания из файла? Программа заполняет массив из текстового файла. Собственно, в коде все...

Проблема при считывании из файла - C++
Пишу простенькую программу по криптографии. В результате шифрования получается txt файлик с набором закорючек(он во вложении). Для...

Переполнение при считывании из файла - C++
Подскажите пожалуйста, где ошибка, вот код чтения из файла: void read_file(void) { int mass; FILE* file = fopen(&quot;arr.txt&quot;, &quot;r&quot;); ...

Неверная кодировка при считывании из файла - C++
Проблема такая, при считывание из файла идет кракозябра, как это исправитьsetlocale(LC_ALL, &quot;rus&quot;); FILE *fp; if(!(fp =...

Лишние биты при считывании файла - C++
Нужно порциями по 63 байта считать текст из файла. &quot;in&quot; - мой открытый файл для чтения. Вот отрывок из кода fseek(in, 0, SEEK_END); ...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
14.04.2013, 19:39     Некорректность работы программы при считывании текстовых данных с файла #2
C++
1
fscanf (f_in, "%s", &un[i].first_name);
Берете адрес объекта типа string, а не адрес буфера для символов.
cybernetics
2 / 2 / 0
Регистрация: 10.04.2013
Сообщений: 42
14.04.2013, 20:28  [ТС]     Некорректность работы программы при считывании текстовых данных с файла #3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
fscanf (f_in, "%s", &un[i].first_name);
Берете адрес объекта типа string, а не адрес буфера для символов.
Подробнее, пожалуйста
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 23:44     Некорректность работы программы при считывании текстовых данных с файла
Еще ссылки по теме:

Сбивается указатель при считывании из файла - C++
Сбивается указатель, считывается не то значение (вместо '1' считывается пробел и всё летит). Но если открыть этот файл в WordPad'e добавить...

Конец файла при потоковом считывании - C++
if (fin.eof()==0){ cout &lt;&lt; &quot;aaa&quot;; int asa; asa = (int)buf; fout.write((char*)buf, sizeof(buf - asa)); } вот...

Ошибка, при считывании инфы с файла... - C++
Вот есть код:#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;fstream.h&gt; #include &lt;stdio.h&gt; #include...

Ошибка при считывании двоичного файла - C++
При считывании из .EXE файла возникает ошибка, а возникает она когда считываемый байт равен 0x1A. Если он есть в файле то программа &quot;видит&quot;...

Разъясните ошибки при считывании файла - C++
не пойму что от меня требуется тут) пол года изучаем язык) часть ошибок исправил но при считывании с файла лепит нарушение прав доступа ...

Переполнение строки при считывании из файла - C++
Считываю я строки из файла, в котором их 500 тысяч. Если строка начинается на R, то я записываю её в другой файл. Примерно на 312000-й...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
14.04.2013, 23:44     Некорректность работы программы при считывании текстовых данных с файла #4
Цитата Сообщение от cybernetics Посмотреть сообщение
Подробнее, пожалуйста
А как тут подробнее?
Вы же не с массивом символов работаете, а с объектом. И берете адрес этого объекта.

У Вас такая ситуация:
Некорректность работы программы при считывании текстовых данных с файла
Yandex
Объявления
14.04.2013, 23:44     Некорректность работы программы при считывании текстовых данных с файла
Ответ Создать тему
Опции темы

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