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

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

Восстановить пароль Регистрация
 
lexa0303
 Аватар для lexa0303
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
17.04.2012, 16:14     Чтение из файла. #1
Вобщем есть класс типа алфавитной карты человека (Имя, фамилия, пол, возраст, зарплата и полученая зарплата + функция вывода этих переменных.

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 минут
ап...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2012, 16:14     Чтение из файла.
Посмотрите здесь:

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

Добавлено через 4 минуты
попробуй вместо
fscanf(file, "%s", &card[i].name);
вот так
fscanf(file, "%s", card[i].name);
lexa0303
 Аватар для lexa0303
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);
}
проблемма в том что вводит неправильные данные.
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
17.04.2012, 18:00     Чтение из файла. #6
какой компилятор
lexa0303
 Аватар для lexa0303
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
17.04.2012, 18:02  [ТС]     Чтение из файла. #7
борланд) синий екранчик ))
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
17.04.2012, 18:09     Чтение из файла. #8
fscanf(file, "%c", &card[i].gender);
замени на
fscanf(file, "%s", &card[i].gender);
остальное оставь так же.
какая ошибка теперь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2012, 18:11     Чтение из файла.
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
lexa0303
 Аватар для lexa0303
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 8
17.04.2012, 18:11  [ТС]     Чтение из файла. #9
о, спасибо) все работает )
Yandex
Объявления
17.04.2012, 18:11     Чтение из файла.
Ответ Создать тему
Опции темы

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