Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2010, 03:39   #1
trance-boy
 
Регистрация: 02.11.2009
Сообщений: 9
По умолчанию Чтение с файла в структуру

Помгои пожалуйста разобраться с чтением из файла в структуру
у меня есть функция, которая записывает в файл, может и кривая,но есть, а вот как сделать считывание из файла, я что-то вообще не понимаю...В нете нечего путнего не могу найти...

Код:
struct monitor
	{
	char tip[10];
	char firma[15];
	float cena;
	};

struct monitor bd[5];

void vvod()
{
	ofstream fout("E:\price.txt");
	cout<<"\n Vvedite DaHbIe: ";
	for (int i=0;i<5;i++)
		{
		cout<<"\n TuII MoHuTopa:";
		cin>>bd[i].tip;
		fout<<"\n TuII MoHuTopa:"<<bd[i].tip<<endl;
		cout<<"\n FupMa u3roToBuTeJIb:";
		cin>>bd[i].firma;
		fout<<"\n FupMa u3roToBuTeJIb:"<<bd[i].firma<<endl;
		cout<<"\n ILeHa:";
		cin>>bd[i].cena;
		fout<<"\n ILeHa:"<<bd[i].cena<<endl;
		}
	fout.close();
}

Последний раз редактировалось Stilet; 05.11.2010 в 08:44.
trance-boy вне форума Ответить с цитированием
Старый 05.11.2010, 08:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
В нете нечего путнего не могу найти
Ух ты... Прям таки ничего?
А это: http://www.programmersforum.ru/showthread.php?t=89469

Да и потом, когда говорят о записи структуры в файл в 99% случаев имеют ввиду бинарную запись, а ты текстовую используешь...
fread, fwrite тебе в помощь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2010, 09:33   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Да и потом, когда говорят о записи структуры в файл в 99% случаев имеют ввиду бинарную запись, а ты текстовую используешь...
fread, fwrite тебе в помощь.
Ну а также можно с помощью тех же потоков писать/считывать. Флаг std::ios::binary в конструктор потоку и функции read и write в помощь при таком варианте. Правда, если уж на то пошло, то лучше бы monitor сделать классом с соответствующими методами, но это уж в зависимости от того, что требуется в данной задаче.
По поводу бинарных файлов и потоков: http://shatalov.su/cpp_primer/file_0.php
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 05.11.2010, 10:17   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Гром
Ну или так, я согласен
Смысл в том чтобы не пихать поля структуры в текстовом виде.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2010, 11:57   #5
xDyPx
Форумчанин
 
Аватар для xDyPx
 
Регистрация: 21.01.2009
Сообщений: 148
По умолчанию

Код:
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <math.h>

struct obj{
	char name[30];
	char link[30];
	int prosmotri;
	int hosti;
};
int main()
{
setlocale (LC_ALL,"");
FILE * baza;
obj element;
int menu1=0;
cout<<"Меню:\n\r1 - Просмотр\n\r2 - Добавить запись\n\r";
cin>>menu1;
switch (menu1) { 

case 2://Добавить запись
printf("%s", "Название: ");
scanf("%s", &element.name);
printf("%s", "Ссылка: ");
scanf("%s", &element.link);
printf("%s", "Просмотры: ");
scanf("%d", &element.prosmotri);
printf("%s", "Хосты: ");
scanf("%d", &element.hosti);
fopen_s(&baza  , "baza.txt", "a+" );
if(!baza) {cout<<"Ошибка открытия файла"; break;}
fwrite(&element,sizeof(element),1,baza);	
fclose(baza);
break;

case 1://Читать файл:
baza=fopen("baza.txt", "r" );
if(!baza) {cout<<"Ошибка открытия файла"; break;}
fread(&element,sizeof(element),1,baza);
while(!feof(baza))
{
	printf("%s", element.name);
	printf("%s", "\n\rСсылка: ");
	printf("%s", element.link);
	printf("%s", "\n\rПросмотры: ");
	printf("%d", element.prosmotri);
	printf("%s", "\n\rХосты: ");
	printf("%d", element.hosti);
	printf("%s", "\n\r");
	fread(&element,sizeof(element),1,baza);
}
fclose(baza);
break;
default: return 0; 
}
_getch ();
}
МОЙ САЙТ
Компьютер позволяет решать все те проблемы, которые до появления компьютера не существовали.

Последний раз редактировалось xDyPx; 05.11.2010 в 12:01.
xDyPx вне форума Ответить с цитированием
Старый 05.11.2010, 12:16   #6
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
trance-boy
Совсем недавно похожая тема была
http://http://www.programmersforum.r...d.php?t=120030
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 08.11.2010, 00:11   #7
trance-boy
 
Регистрация: 02.11.2009
Сообщений: 9
По умолчанию

Все спасибо, в особенности за пример с бинарной записью))
А вот классов мы еще не учили...да и я не совсем гений по программированию, я больше по схемотехнике)!
trance-boy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла (С) spirit_trapper Помощь студентам 4 26.05.2010 19:37
Нужно прочитать из файла txt в динамическую структуру dimalem Общие вопросы C/C++ 0 18.04.2010 15:16
Упорядочить структуру файла. Guinsoo Microsoft Office Excel 3 03.07.2009 12:38
Чтение из файла Arkuz Общие вопросы Delphi 14 08.10.2008 19:52