71 / 71 / 58
Регистрация: 12.12.2013
Сообщений: 420
1

Захват ненужных данных

05.04.2014, 00:26. Показов 1003. Ответов 3
Метки нет (Все метки)

Здравствуйте! Помогите разобраться, почему считывается одно, а записывается другое.
Итак, имеется структура, которую использую для связанного списка:
C++
1
2
3
4
5
6
7
struct Baza
        {
            wchar_t Name[25],Surname[40], Klass[2], Bukva[2];
            Baza *Next, *Prev;
 
        };
Baza *Start, *Tek, *New;
А вот часть кода, где заполняется эта структура непосредственно из файла:
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
void ReadFile(void)
    {
        NNN=0;
     wifstream File; 
     locale loc("rus_rus.1251");
     File.imbue(loc);
     File.open(NameFile);
     Start=Tek=New=NULL;
     while(!File.eof())
         {
             New=new Baza;
             New->Next=NULL; New->Prev=NULL;
             File>>New->Name;
             File>>New->Surname;
             File>>New->Klass;
             File>>New->Bukva;
             if (Start == NULL) Start=New;
             else 
             {
                 Tek->Next=New;
                 New->Prev=Tek;
                 
             }
             Tek=New;
             NNN++;
         }
     File.close();
    }
Структура данных в файле "Имя Фамилия класс буква", где между словами табуляция.
При чтении из файла на этапе заполнения класса все нормально, в поле появляется нужное значение, но как только считали букву, то она, почему-то, выполняется контакация класса и буква.

Получаем на выходе, например, "11А А". Но если записывать число из разряда единиц, например, "7", то выводится как надо "7 А", хотя отвожу место под хранения 2-х символов.

Что не так? MVS 2010. #include<fstream>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2014, 00:26
Ответы с готовыми решениями:

Очистить массив от ненужных элементов
Дан динамический одномерный массив. Откинуть элементы, которые не соответствуют возростанию. К...

Массив сортировка по возростанию с удалением ненужных элементов.
Не как не могу разобраться.Необходимо в массиве произвести сортировку чисел в порядке возрастания...

Как сделать округление/отбрасывание ненужных цифр после запятой?
Как сделать округление/отбрасывание ненужных цифр после запятой? Вот например код: double a =...

Удаление ненужных данных
1С Предприятие 7.7 7.70.027 Конфигурация Торговля и склад 7.70.872 Есть рабочая база данных,...

3
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.04.2014, 00:38 2
Лучший ответ Сообщение было отмечено casper007 как решение

Решение

Цитата Сообщение от casper007 Посмотреть сообщение
Klass[2]
Тут массив под строку из одного символа. Учитывайте, что функции чтения добавляют в массив '\0', поэтому для него должно быть место в массиве.
1
71 / 71 / 58
Регистрация: 12.12.2013
Сообщений: 420
05.04.2014, 00:43  [ТС] 3
Цитата Сообщение от alsav22 Посмотреть сообщение
Учитывайте, что функции чтения добавляют в массив '\0',
Спасибо за помощь. Но вот только я не понял, каким, тогда, боком в массив записывалась еще и буква, если место только под один символ?
0
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.04.2014, 00:49 4
Цитата Сообщение от casper007 Посмотреть сообщение
Но вот только я не понял, каким, тогда, боком в массив записывалась еще и буква, если место только под один символ?
Компилятор не отслеживает выход за границу массива. При работе кода, будет чтение, пока не залезет куда не нужно. Там структура, массивы в ней подряд идут, вот и читает в память.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2014, 00:49
Помогаю со студенческими работами здесь

Чистка базы данных от ненужных объектов
Может кто подскажет? Есть база данных MS Access 2007 изрядно засоренная пробными формами,...

Добавление нового столбца провоцирует вывод ненужных данных
Приветствую. Вот код запроса: SELECT FirstName||' '||LastName &quot;Employee&quot;, EXTRACT(YEAR FROM...

Захват данных из другого приложения
Подскажите пожалуйста Возможно ли както захватить данные из другого приложения т.е. например...

Захват данных с USB порта
Подскажите пожалуйста, можно ли как-то получить захватить происходящее на USB порту? То есть...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru