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

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

Восстановить пароль Регистрация
 
Aero93
8 / 8 / 1
Регистрация: 19.12.2011
Сообщений: 35
10.07.2012, 17:25     Записывание в структуру из файла #1
Добрый день! У меня проблема с записью из файла 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
Вот к примеру строка. При такой записи,как у меня, выводится , но то лишний символ втиснется, то вообще белиберда... Наверное, я не правильно оперирую памятью. Прошу помощи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 17:25     Записывание в структуру из файла
Посмотрите здесь:

Считывания из файла в структуру C++
C++ Считать структуру из файла
Считать структуру из файла C++
C++ Из файла в структуру
Потоком из файла в структуру C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 18:03     Записывание в структуру из файла #2
Ты же вроде не в бинарном открываешь. Так юзай fprintf
Aero93
8 / 8 / 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;

Как сделать так, что бы в предыдущих не выводилось все последующее?
Vort_
 Аватар для Vort_
186 / 186 / 52
Регистрация: 10.07.2012
Сообщений: 400
10.07.2012, 21:09     Записывание в структуру из файла #4
нужно чтоб строка заканчивалась нулевым символом
сделать - просто. к примеру, объявить не char s[6], а char s[7]
обнулить все 7 байт, а читать 6 первых
Aero93
8 / 8 / 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'тов перевернутой елочкой...
Vort_
 Аватар для 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; // так то лучше
}
Yandex
Объявления
11.07.2012, 11:17     Записывание в структуру из файла
Ответ Создать тему
Опции темы

Текущее время: 08:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru