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

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

Войти
Регистрация
Восстановить пароль
 
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
#1

Чтение файла в структуру - C++

16.05.2013, 09:42. Просмотров 364. Ответов 9
Метки нет (Все метки)

Здравствуйте, не получается прочитать файл и компоненты записать в структуру.
Допустим, содержание файла:
C
1
2
3
4
5
6
7
4
6
Text1
2
Text2
Text3
Text4
И структура:
C
1
2
3
4
5
6
7
8
struct st
{
int value;
int value2;
char* text;
int value3;
char* string[3];
} my_str[5];
Т.е., значения должны вот так записываться:
C
1
2
3
4
5
6
7
4 - value
6 - value2
Text1 - text
2 - value3
Text2 - string[0]
Text3 - string[1]
Text4 - string[2]
Покажите пример, как записать..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2013, 09:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение файла в структуру (C++):

Чтение из файла в структуру - C++
Здравствуйте, имеется функция чтения из файла в структуру и последующего вывода на экран: void ReadFileFromStrucure (int...

Чтение файла в структуру - C++
Всем привет! Есть бинарный файл test.txt, в нём заголовок, который я пытаюсь прочитать в структуру, но что-то не идёт... Содержание...

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

Чтение из бинарного файла в структуру - C++
Собственно вопрос в заголовке, есть структура: struct StructEmployee {; int id; string fullname; string...

Чтение данных из файла в структуру - C++
Нужно считать данные с блокнота и поработать с ними. программу написала, но подчеркивает mass что не так #include "stdafx.h" ...

Чтение из текстового файла в структуру - C++
Всем привет, я новичок в C++. Испытав многое (безрезультатно) решил просить помощи у вас. Что необходимо: 1) Чтение из файла txt данных...

9
Asker
116 / 104 / 11
Регистрация: 18.12.2010
Сообщений: 378
16.05.2013, 10:34 #2
Это зависит от задания. В нём обычно указывается, в каком порядке и каким образом в файле записаны поля структуры, да и надо знать, что за структура. Исходя из него, уже можно определить, как считывать информацию.

Если надо самому написать запись в файл и чтение потом, то тут можно как угодно, лишь бы работало.
В вашем случае я б как-нибудь так написал:
C++
1
2
3
4
5
6
7
8
...
ifstream F;
st A; // Ваша структура
F.open("файл_откуда_читаем", ios::in);
F >> A.value >> A.value2;
fgets(A.text, 255, F);
F >> A.value3;
// и т.д.
0
Flassie
182 / 167 / 29
Регистрация: 03.08.2012
Сообщений: 591
Завершенные тесты: 2
16.05.2013, 10:41 #3
C++
1
2
3
ifstream in("input.txt");
s a; // Структура
in >> a.value1 >> a.value2 >> a.text >> a.value3 >> a.text1 >> a.string[0] >> a.string[1] >> a.string[2];
Библиотека fstream
0
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
16.05.2013, 10:43  [ТС] #4
Asker, Да это не задание, я для себя)
И еще небольшая ошибочка: вместо fgets, в вашем примере, надо использовать getline.



Вот если считать строку напрямую в структуру, как я делаю:
C
1
f >> my_str[0].text;
программа крашится.
0
Asker
116 / 104 / 11
Регистрация: 18.12.2010
Сообщений: 378
16.05.2013, 10:55 #5
Цитата Сообщение от Slava_ Посмотреть сообщение
Asker, Да это не задание, я для себя)
И еще небольшая ошибочка: вместо fgets, в вашем примере, надо использовать getline.
getline записывает в строку string
А у Вас там строка представлена массивом char
0
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
16.05.2013, 11:03  [ТС] #6
Цитата Сообщение от Asker Посмотреть сообщение
getline записывает в строку string
А у Вас там строка представлена массивом char
По-моему, нет:
Чтение файла в структуру
0
Asker
116 / 104 / 11
Регистрация: 18.12.2010
Сообщений: 378
16.05.2013, 11:40 #7
Я знаю, что getline() работает с массивом символов. Вы меня неправильно поняли.
Просто у Вас написано
C++
1
char* string[3];
-это массив из указателей на строки, или я не прав?
Указатели неинициализированы, если написать
C++
1
F.getline(my_str.string[0], 50);
у меня лично вылетает Runtime-error. Вот если б вы написали char string[3][50]; к примеру, так работает

Если я ошибаюсь - поправьте меня, буду благодарен!
1
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
16.05.2013, 13:08  [ТС] #8
Спасибо, работает

Eще вопросик: Допустим, чтобы обнулить такой массив, обязательно ли использовать memset?
И чтобы присвоить какoе-нибудь значение, обязательно ли использовать strcpy?
C
1
2
3
4
5
my_str[0].text = "\0";//Так не выйдет
memset(my_str[0].text, 0, 20);//Вот так работает
 
my_str[0].text = name;////Так не выйдет
strcpy(my_str[0].text, name);//Вот так будет работать
0
Asker
116 / 104 / 11
Регистрация: 18.12.2010
Сообщений: 378
16.05.2013, 13:43 #9
Цитата Сообщение от Slava_ Посмотреть сообщение
И чтобы присвоить какoе-нибудь значение, обязательно ли использовать strcpy?
В Си операция присваивания одной строки другой (в виде char*) не определена. только так (или можно запилить поэлементное копирование, но кому это надо?)

Цитата Сообщение от Slava_ Посмотреть сообщение
Допустим, чтобы обнулить такой массив, обязательно ли использовать memset?
А чем Вам memset не нравится? имхо, нормально работает
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.05.2013, 14:03 #10
Цитата Сообщение от Asker Посмотреть сообщение
В Си операция присваивания одной строки другой (в виде char*) не определена.
Если не изменять строку (и первоисточник не будет удален до использования), то просто скопируется указатель. Можно смело использовать такую строку.
0
16.05.2013, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2013, 14:03
Привет! Вот еще темы с ответами:

Построчное чтение из файла в структуру - C++
Всем доброго дня! Есть структура вида struct Product { char code; char name; double price;

Чтение данных из текстового файла в структуру - C++
Добры вечер новичках и профессионалам! Изучаю C++ только четыре месяца и сейчас разбираюсь с записью из файла (библиотека fstream). И...

Чтение из файла в список (двунаправленный), используя структуру - C++
Добрый день, немного запутался со списками, и файлом... Будьте добры, помогите разобраться. Есть файл, считываю информацию в список, а...

Запись структуры и чтение из файла в структуру ( как бы лучше ) - C++
Подкиньте идею как лучше записать структуру в файл и обратно из файла в структуру У меня есть мысль: даны 4 элемента вводим их в...


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

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

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