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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 77, средняя оценка - 4.78
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
#1

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

16.03.2009, 19:05. Просмотров 9390. Ответов 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
Bus *readBD(char *fname)
{
    FILE *inf; //указатель на структуру FILE
    Bus x; //буферная переменная структуры Bus
    Bus *buses=0; //если было что-то введено очищаем
    if ((inf=fopen(fname,"r"))==NULL)
      {
        printf("Not file %s\n",fname);
        return 0;
      }
   // fseek(inf,0,0); //задаем текущее положение курсора в начале
    while (!feof(inf))
      {
        fscanf(inf," %s ",&x.fio); //s-строковый тип
        fscanf(inf," %d ",&x.mnomer); //d-десятичный вид
        fscanf(inf," %s ",&x.nombus);
        fscanf(inf," %s ",&x.depo);
        buses=add(buses,x); //добавление
      }
    Print(buses); //функция печать
    fclose(inf); //закрывает поток ввода/вывода
    return buses;
}
а я хочу через

C++
1
ifstream inf(fname, ios_base::in);
Буду очень благодарна, если кто-то поможет, а то я вся замучилась
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2009, 19:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение данных из файла (C++):

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

Чтение из файла определённого места и сортировка данных исходя из этих данных - C++
Есть некий текстовый документ, содержащий информацию о посещении сайта в формате: Например 12.5.76.200 04:23 Mon Цель:...

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

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

Чтение данных из файла С++ - C++
Здравствуйте. Дан простой пример потокового ввода/вывода дисковых файлов из Лафоре ООП С++. // форматированный вывод в файл //...

Чтение данных из файла - C++
Доброго времени, долго искал ответ, решил все таки спросить. Есть файл в котором такие данные TTT ppp 5 5 5 EEE aaa 3 3 3 DDD vvv 6...

5
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
16.03.2009, 19:16 #2
Покажи, как именно у тебя не выходит.
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
16.03.2009, 20:26 #3
функция просто открывает, читает, выводит
0
Вложения
Тип файла: zip read_file.tar.zip (614 байт, 286 просмотров)
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
17.03.2009, 08:02  [ТС] #4
Вот код, в нем есть: Bus *Read_file(char *fname)
0
Вложения
Тип файла: doc read.doc (39.0 Кб, 216 просмотров)
YurA_280784
Заблокирован
17.03.2009, 10:39 #5
Вообще fscanf сбоит когда файл записывался не fprintf(), знаю т.к. сам не раз на себе испытал, ща попробую чего нить накодить...

Добавлено через 1 час 14 минут 13 секунд
Вот накодил, конечно не оч круто, просто чтоб разобраться можно было)))
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>//getch()
 
typedef struct _BUS {
    char  *fio;
    int   mnomer;
    int   nombus;
    char  *depo;
} BUS, *PBUS, *LPBUS;
 
bool ReadBD(char *fPath, PBUS pBUS);
bool WrieBD(char *fPath, PBUS pBUS);
 
void p1();
void p2();
 
void main()
{
    cout<<"\tMenu\r\n";
    cout<<"1 - zapis' dannih v fail\r\n";
    cout<<"2 - chtenie iz fila\r\n";
    cout<<"Dlya vihoda nazhmite luboi simvol\r\n";
    int key;cin>>key;
    bool repeat = false;
    switch(key)
    {
    case 1:repeat = true;p1();break;
    case 2:repeat = true;p2();break;
    default : break;
    }
    if(repeat)
        main();
}
 
bool ReadBD(char *fPath, PBUS pBUS)
{
    FILE *f;
    bool RetVal = false;
    if( (f = fopen(fPath,"rb+")) )
    {
        fscanf(f,"%s",pBUS->fio);
        fscanf(f,"%d",&pBUS->mnomer);
        fscanf(f,"%d",&pBUS->nombus);
        fscanf(f,"%s",pBUS->depo);
        fclose(f);
        RetVal = true;
    }
    else
        printf("%s\r\n",strerror(ferror(f)));
    return RetVal;
}
 
bool WrieBD(char *fPath, PBUS pBUS)
{
    FILE *f;
    bool RetVal = false;
    if( (f = fopen(fPath,"wb+")) )
    {
        fprintf(f,"%s\r\n",pBUS->fio);
        fprintf(f,"%d\r\n",pBUS->mnomer);
        fprintf(f,"%d\r\n",pBUS->nombus);
        fprintf(f,"%s\r\n",pBUS->depo);
        fclose(f);
        RetVal = true;
    }
    else
        printf("%s\r\n",strerror(ferror(f)));
    return RetVal;
}
 
void p1()
{
    cout<<"Zapis' structuri v file\r\n";
    PBUS pBUS   = (PBUS)malloc(sizeof(BUS));
    pBUS->fio   = (char *)malloc(MAX_PATH);
    pBUS->depo  = (char *)malloc(MAX_PATH);
    char *chBuf = (char *)malloc(MAX_PATH);
    cout<<"Vvedite FIO,bez probelov! : ";
    cin>>pBUS->fio;
    
    cout<<"Vvedite Nomer mesta    : ";
    cin>>pBUS->mnomer;
 
    cout<<"Vvedite Nomer avtobusa : ";
    cin>>pBUS->nombus;
 
    cout<<"Vvedite Nazvanie depo  : ";
    cin>>pBUS->depo;
 
    cout<<"Vvod okonchen\r\n";
    if(!WrieBD("C:\\BD.txt",pBUS))
        cout<<"Oshibka zapisi fila %s\r\n","C:\\BD.txt";
    free((void *)pBUS->fio);
    free((void *)pBUS->depo);
    free((void *)pBUS);
    free((void *)chBuf);
}
 
void p2()
{
    printf("Chtenie structuri iz fila\r\n");
    PBUS pBUS = (PBUS)malloc(sizeof(BUS));
    pBUS->fio  = (char *)malloc(MAX_PATH);
    pBUS->depo = (char *)malloc(MAX_PATH);
    if(!ReadBD("C:\\BD.txt",pBUS))
        printf("Oshibka chteniya fila %s\r\n","C:\\BD.txt");
    else
    {
        printf("Chtenie yspeshno. prosmotr structuri\r\n");
        printf("FIO            : %s\r\n",pBUS->fio);
        printf("Nomer mesta    : %d\r\n",pBUS->mnomer);
        printf("Nomer avtobusa : %d\r\n",pBUS->nombus);
        printf("Nazvanie depo  : %s\r\n",pBUS->depo);
    }
}
Всё проверено и работает 100%!!!Делал в VisualStudio 6.0 ConsoleAplication
0
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
17.03.2009, 12:31  [ТС] #6
YurA_280784, все супер, спасибо конечно, но мне наоборот не нужно через fscanf, я хочу
что-то типа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Bus *Read_file(char *fname)
{
   Bus x;
   Bus *buses;
   ifstream fin(fname, ios_base::in);
   if (!fin)
   {
        cout<<"Not file "<<fname<<endl;
        return 0;
    }
  
    while (!fin.eof())
    {
        fin>>x.fio;
        fin>>x.mnomer;
        fin>>x.nombus;
        fin>>x.depo;
        buses=add(buses,x);
     }
    Print(buses);
    fin.close();
    return buses;   
}
0
17.03.2009, 12:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2009, 12:31
Привет! Вот еще темы с ответами:

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

Чтение данных из файла - C++
У меня такая проблема, мне дан бинарный файл, где записаны числа типа float. Мне необходимо их оттуда прочитать. Но никак не получается((...

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

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


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

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

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