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

Почему ввод переменной из файла не работает? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как написать скрипт, чтобы по нажатию таба, он прожимался 3 раза? (скрипт хоткей) http://www.cyberforum.ru/cpp-beginners/thread1804389.html
Здравствуйте, как написать скрипт, чтобы по нажатию таба, он прожимался 3 раза, срочно нужно для работы, а как сделать без понятий. Помогите. Добавлено через 53 минуты Не важно на каком языке, главное чтобы работало
C++ Реализовать функцию, находящую произведение индексов максимального и минимального элементов массива Создать функцию, находящую произведение номеров максимального и минимального элементов одномерного массива. Использовать данную функцию для каждой строки матрицы Е(6,6). http://www.cyberforum.ru/cpp-beginners/thread1804358.html
Можно ли сменить раскладки клавиатуры в программе и если да, то как? C++
Здравствуйте, хотел бы узнать, есть ли в с++ возможность сменить раскладку? Например так //Была русская changeLanguage(); //Стала английская? Пытался гуглить, но по запросам "Смена раскладки с++" и др. ничего нужного (да что там, вообще ничего, где, кроме "раскладки", присутствовал бы "c++") не находит(
Ошибка при перегрузке оператора + C++
Имеется класс, который представляет из себя строку и количество символов в ней. Задача - перегрузить оператор +, чтобы он складывал нам две строки и выдавал третью. Сделал я, по советам местных форумчан, это так: String operator+(String & a, String & b) { String c; c.i = a.i + b.i; c.p = new char; strcat(c.p, a.p); strcat(c.p + a.i, b.p); return c;
C++ Найти причины появления ошибки "Обнаружен недопустимый обработчик исключений" http://www.cyberforum.ru/cpp-beginners/thread1804327.html
Всем привет, знаю что по AEROFLOT здесь уже итак слишком много заданий, но все же помогите разобраться с ошибкой. У меня есть готовый вариант решения, где все работает, но при выполнении функции show() появляется ошибка: Код: #include "stdafx.h" #include <iostream> #include "conio.h" #include "locale.h" #include "windows.h"
C++ Почему управляющая последовательность \b не удаляет предыдущий символ? { for (i0; i < view.N; i++) { for (j0; j < view.M; j++) { os << view.element << " "; os << "\b"; //удаляет } os << "\b\b"; //не удаляет os << "\n\n"; подробнее

Показать сообщение отдельно
Oleg_b4
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 4
07.09.2016, 18:18  [ТС]     Почему ввод переменной из файла не работает?
Спасибо за доступное пояснение
Теперь вижу причину

Добавлено через 21 час 5 минут
Ввод-вывод теперь работает, но теперь не могу записать данные из файла в структуру.
Переменные типа int и bool записываются корректно, переменные типа char - нет.
Изначально я решил, что проблема с памятью, но освобождение оной не решило проблемы

♦ I вариант (с освобождением динамической памяти - delete[]ma; delete[]co; ):
При последующем выводе структуры значения всех s[i].mark остается одинаковым (выводит символ "u")

♦ II вариант (без освобождения динамической памяти):
При последующем выводе структуры содержание всех s[i].mark остается одинаковым (выводит одну марку автомобиля).

Подскажите, пожалуйста, где я неправ?

P.s: В цикле записи данных из файла в структуру после присвоения s[i].mark = ma;[/COLOR] добавлял вывод на экран значения s[i].mark. Присвоение проходит успешно - каждый раз присваивается новое значение.
Однако, если поставить вывод s[i].mark после тела цикла, то значения уже будут одинаковые (s[0].mark = s[1].mark = s[2].mark = ... )

Структура

C++
1
2
3
4
5
6
7
8
9
10
11
struct Auto
{
    char *mark;
    int year;
    char *country;
    bool used;
    int owners;
    bool accidents; 
    bool wheel;
    int cost;
};


Выделение и удаление динамической памяти для структуры в main()

C++
1
2
Auto *car = new Auto[N];
delete[] car;


Считывание данных из файла

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
29
30
31
32
33
void GetFromFile(istream &is, Auto s[], int b)
{
    char *ma = new char[15];
    char *co = new char[15];
    int year, owners, cost;
    bool used, accidents, wheel;
 
    system("cls");
    for (int i = 0; i < b;i++)
    {
        for (int j = 0;j < 15;j++)
        {
            ma[i] = '\n';
            co[i] = '\n';
        }
        
        is >> ma >> year >> co >> used >> owners >> accidents >> wheel >> cost;
        
        s[i].mark = ma; 
        s[i].year = year;
        s[i].country = co;
        s[i].used = used;
        s[i].owners = owners;
        s[i].accidents = accidents;
        s[i].wheel = wheel;
        s[i].cost = cost;
    }
    cout << "Данные успешно считаны\n\n";
    cout << "Нажмите любую клавишу, чтобы вернуться в меню";    
    delete[]ma;
    delete[]co;
    _getch();
}


Вывод структуры

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Print(const Auto s[], int b)
{
    system("cls");
    for (int i = 0; i < b; i++)
    {
        cout << "Автомобиль №" << i + 1 << ":\n\n";
        cout << "Марка: " << s[i].mark << endl;
        cout << "Год выпуска: " << s[i].year << endl;
        cout << "Страна производитель: " << s[i].country << endl;
        if (s[i].used == true) cout << "Автомобиль новый\n";
        if (s[i].used == false) cout << "Автомобиль б/у\n";
        cout << "Количество собственников: " << s[i].owners << endl;
        if (s[i].accidents == true) cout << "Автомобиль попадал в аварии\n";
        if (s[i].accidents == false) cout << "Автомобиль не попадал в аварии\n";
        if (s[i].wheel == true) cout << "Руль справа\n";
        if (s[i].wheel == false) cout << "Руль слева\n";
        cout << "Стоимость: " << s[i].cost << " руб.\n\n";
    }
    _getch();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru