Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/53: Рейтинг темы: голосов - 53, средняя оценка - 4.58
 Аватар для Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38

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

16.03.2009, 19:05. Показов 10258. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2009, 19:05
Ответы с готовыми решениями:

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

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

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

5
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
16.03.2009, 19:16
Покажи, как именно у тебя не выходит.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.03.2009, 20:26
функция просто открывает, читает, выводит
Вложения
Тип файла: zip read_file.tar.zip (614 байт, 287 просмотров)
0
 Аватар для Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
17.03.2009, 08:02  [ТС]
Вот код, в нем есть: Bus *Read_file(char *fname)
Вложения
Тип файла: doc read.doc (39.0 Кб, 217 просмотров)
0
Заблокирован
17.03.2009, 10:39
Вообще 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  [ТС]
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2009, 12:31
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru