Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
1

Чтение из файла.

17.04.2012, 16:14. Показов 544. Ответов 8
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class cardd
{
    public:
    char name [20];
    char surname [20];
    char gender;
    int age;
    int salary;
    int salary1;
 
    void output()
    {
        int i;
 
        out(name);
        cout<<"\t";
        out(surname);
        cout<<"\t";
        cout<<gender<<"\t"<<age<<"\t"<<salary;
        
        cout<<"\n";
    }
};
нужно сделать ввод всех переменных этого класса из файла, я сделал вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FILE* file;
 
    file = fopen("g:\\lab.txt","rt");
 
    fscanf(file, "%d", &n);
 
 
    for (i=0; i<n; i++)
    {
        fscanf(file, "%s", &card[i].name);
        fscanf(file, "%s", &card[i].surname);
        fscanf(file, "%c", &card[i].gender);
        fscanf(file, "%d", &card[i].age);
        fscanf(file, "%d", &card[i].salary);
        fscanf(file, "%d", &card[i].salary1);
    }
но почемуто оно вводит правильно только имя и фамилию, а во всех остальных какаято ерунда.

сам файл выглядит примерно вот так:
5
blabla
lablab
W
15
1234
1234
ololo
trololo
M
123
1000
0
ya
krevetko
M
10000
9000
on
krevetka
M
10
10
ono
krevettkko
W
1010
1010

Помогите плз)

Добавлено через 2 часа 15 минут
ап...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2012, 16:14
Ответы с готовыми решениями:

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

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

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

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

8
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
17.04.2012, 17:09 2
сдается мне, что использование File - это сишный подход. stdio.h
смотри в сторону fstream и в частности operator>>
0
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
17.04.2012, 17:12  [ТС] 3
ну может быть... но что не правильно то в коде ?
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
17.04.2012, 17:55 4
в чем проблема? в чем ошибка? код похож на правильный так то.. напиши код полностью. у тебя массив обьектов одного класса, что ли?

Добавлено через 4 минуты
попробуй вместо
fscanf(file, "%s", &card[i].name);
вот так
fscanf(file, "%s", card[i].name);
0
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
17.04.2012, 17:56  [ТС] 5
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
102
103
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
 
int lenght(char *str)
{
    int i=0;
 
 
    do
    {
        i++;
    } while (str[i]!='\0');
 
    return(i);
}
 
void out(char *str)
{
    int i,n;
 
    n = lenght(str);
 
    for (i=0; i<n; i++)
    {
        cout<<str[i];
    }
}
 
class cardd
{
    public:
    char name [20];
    char surname [20];
    char gender;
    int age;
    int salary;
    int salary1;
 
    void output()
    {
        int i;
 
        out(name);
        cout<<"\t";
        out(surname);
        cout<<"\t";
        cout<<gender<<"\t"<<age<<"\t"<<salary;
        if (gender=='m')
        {
            if (age>=60)
            {
                cout<<"Pensia";
            }
        }
        if (gender=='w')
        {
            if (age>=55)
            {
                cout<<"Pensia";
            }
        }
        cout<<"\n";
    }
};
 
 
void main()
{
    clrscr();
 
    cardd card [20];
 
    int i,n;
 
    FILE* file;
 
    file = fopen("g:\\lab8.txt","rt");
 
    fscanf(file, "%d", &n);
 
 
    for (i=0; i<n; i++)
    {
        fscanf(file, "%s", &card[i].name);
        fscanf(file, "%s", &card[i].surname);
        fscanf(file, "%c", &card[i].gender);
        fscanf(file, "%d", &card[i].age);
        fscanf(file, "%d", &card[i].salary);
        fscanf(file, "%d", &card[i].salary1);
    }
 
    for (i=0; i<n; i++)
    {
        card[i].output();
    }
 
    getch();
 
 
 
    fclose(file);
}
проблемма в том что вводит неправильные данные.
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
17.04.2012, 18:00 6
какой компилятор
0
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
17.04.2012, 18:02  [ТС] 7
борланд) синий екранчик ))
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
17.04.2012, 18:09 8
fscanf(file, "%c", &card[i].gender);
замени на
fscanf(file, "%s", &card[i].gender);
остальное оставь так же.
какая ошибка теперь?
1
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
17.04.2012, 18:11  [ТС] 9
о, спасибо) все работает )
0
17.04.2012, 18:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2012, 18:11
Помогаю со студенческими работами здесь

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

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

Чтение файла с n строки и до конца файла
как сделать так чтобы писало не с начала файла а например с середины и до конца? fstream...

Чтение текстового файла специфического файла
Добрый день! Есть один текстовый файл определенного формата. Заголовок по столбцам такой: год...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru