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

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

Войти
Регистрация
Восстановить пароль
 
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
#1

Записывание в структуру из файла - C++

10.07.2012, 17:25. Просмотров 299. Ответов 5
Метки нет (Все метки)

Добрый день! У меня проблема с записью из файла bla-bla.txt в структуру.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char d[3]; // Массив символов для пробелов
struct time {
char s[3];
char name[4];
char year[5];
 } m;
FILE *fd;
fd=fopen("bla-bla.txt", "r");
 fread(&m.s,  sizeof(char),2, fd);
  fread(&d,  sizeof(char),1, fd);
 fread(&m.name,  sizeof(char),3, fd);
  fread(&d,  sizeof(char),2, fd);
 fread(&m.year,  sizeof(char),4, fd);
  fread(&d,  sizeof(char),1, fd);
AS G03 2012
Вот к примеру строка. При такой записи,как у меня, выводится , но то лишний символ втиснется, то вообще белиберда... Наверное, я не правильно оперирую памятью. Прошу помощи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 17:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записывание в структуру из файла (C++):

Из файла в структуру - C++
как этот код: for (i = 0; i < N; i++) // Читаем информацию из файла { fscanf(f1,"%s\n",&Minfo.Family); ...

из файла в структуру - C++
Задан файл с N записями о работниках цеха: ФИО, специальность. Найдите количество работников заданой специальности. Не знаю как из...

Считывания из файла в структуру - C++
Скажите как из текстового файла счиать данные и превратить их в структуру на С

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

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

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

5
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 18:03 #2
Ты же вроде не в бинарном открываешь. Так юзай fprintf
0
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
10.07.2012, 18:30  [ТС] #3
Я работаю с интерфейсом, тоесть через поля Edit...
Сейчас не много переделал, и у меня во все предыдущие поля кладется все то, что лежит дальше.
Тоесть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct time {
       char s[6];
       char name[4];
       char lol[3];
       p(){ memset ( s, 0, 6); // зануление памяти под эти переменные
            memset ( name, 0, 4);
            memset ( lol, 0, 3);} } m,k;
       FILE *fp;
       fp=fopen("lol.txt", "r");
       fread(&m.s , sizeof(char), 6, fp);
       fread(&m.name , sizeof(char), 4, fp);
       fread(&m.lol , sizeof(char), 3, fp);
       k=m;
       Edit1->Text=m.s;
       Edit2->Text=m.name;
       Edit3->Text=m.lol;
В файле текст: dases fir vac.
В Edit1 показывает: dases fir vac;
В Edit2 показывает fir vac;
В Edit3 показывает vac;

Как сделать так, что бы в предыдущих не выводилось все последующее?
0
Vort_
186 / 186 / 52
Регистрация: 10.07.2012
Сообщений: 400
10.07.2012, 21:09 #4
нужно чтоб строка заканчивалась нулевым символом
сделать - просто. к примеру, объявить не char s[6], а char s[7]
обнулить все 7 байт, а читать 6 первых
0
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
10.07.2012, 21:58  [ТС] #5
Цитата Сообщение от Vort_ Посмотреть сообщение
нужно чтоб строка заканчивалась нулевым символом
сделать - просто. к примеру, объявить не char s[6], а char s[7]
обнулить все 7 байт, а читать 6 первых
Если бы такой маневр прошел, я бы не создавал данную тему... Само то задание у меня звучит , что есть файл, в нем n-ое количество записей(строк), нужно вывести один из элементов этой структуры путем поиска с заданным именем и временем...Самая сложная часть распихать эти записи по структуре..., остальное уже готово.

Покрутил не много с размерами символьных массивов - выходит более-менее, но в программу не рационально сувать кучу fread'ов, оэтому надо считать сразу всю структуру сразу тоесть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct time {
       char server[6];
       char name[4];
       char player[4];
       char rank[5];
       p(){ memset ( server, 0, 6);
            memset ( name, 0, 4);
            memset ( player, 0, 4);
            memset ( rank, 0 ,5);} } m;
       FILE *fp;
       fp=fopen("lol.txt", "r");
       fread(&m , sizeof(time), 1, fp);
       Edit1->Text=m.server;
       Edit2->Text=m.name;
       Edit3->Text=m.player;
       Edit4->Text=m.rank;
Вот тут та же совершенно проблема - выводит в поля Edit'тов перевернутой елочкой...
0
Vort_
186 / 186 / 52
Регистрация: 10.07.2012
Сообщений: 400
11.07.2012, 11:17 #6
надо значит делать копии

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// VS2010
#include <string>
#include <iostream>
 
struct A
{
    char s1[4];
    char s2[6];
};
 
void main()
{
    A a;
    memcpy(&a.s1[0], "teststring", sizeof(A));
 
    std::cout << a.s1 << std::endl << a.s2 << std::endl; // получаем фигню
    std::string s1copy(a.s1, sizeof(a.s1));
    std::string s2copy(a.s2, sizeof(a.s2));
    std::cout << std::endl << s1copy.c_str() << std::endl << s2copy.c_str() << std::endl; // так то лучше
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2012, 11:17
Привет! Вот еще темы с ответами:

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

Чтение файла в структуру - C++
Здравствуйте, не получается прочитать файл и компоненты записать в структуру. Допустим, содержание файла: 4 6 Text1 2 Text2 ...

Потоком из файла в структуру - C++
В общем у меня есть задание: Прочитать из текстового файла строку и записать её в структуру. В строке 6 полей структуры. Я образно знаю...

Считать с файла в структуру - C++
Ребятки, похожие темы конечно есть но помощь нужна :) есть такая структура struct vect { double x; double y; double z; ...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
11.07.2012, 11:17
Ответ Создать тему
Опции темы

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