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

Файл произвольного доступа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Окно программы очень быстро закрываеться и нельзя просмотреть результат http://www.cyberforum.ru/cpp-beginners/thread41473.html
Привет. Я студентка первого курса. Я написала програму (С ++ Console Wizard). Программа после компиляции разрешает вводить нужные данные, а результа не выводиться (точне окно очень быстро...
C++ Векторы Даны векторы x и y размерности n, и квадратные матрицы А и В размерности n*n. Вычислить (Ах, Ву). Алгоритмы умножения матрицы на вектор и скалярного произведения векторов реализовать в выгляде... http://www.cyberforum.ru/cpp-beginners/thread41452.html
Вычисления значений аргумента C++
Составить программу вычисления значений оргумента, приближенного значения суммы и функции у (х) на отрезке с шагом h = (b-a)/M. Добавлено через 14 минут 40 секунд Сумма s= x/pow(2,i); i=1;...
Исправьте програму формирования эл-тов массивов C++
исправьте програму формирования эл-тов массивовX,Y,Z и их упорядочение в порядке возрастания значений элементов и вывода минимальных элементов, если: ошибка в программе - она не так как то считает....
C++ Две матрицы http://www.cyberforum.ru/cpp-beginners/thread41437.html
У меня есть два кода. Нужно код второй матрицы вставить в первый в указаное место (строка 127). Несколько дней уже его мучаю... У меня не получается, помогите, кто-нибудь. :'( 1ый код. #include...
C++ Пошаговое объяснение программы. Задаются точные арифметические операции, в которых некоторые цифры либо стерты, либо заменены буквами. В данной операции одна и та же буква заменяет одну и ту же цифру и разные буквы представляют... подробнее

Показать сообщение отдельно
tube
0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26

Файл произвольного доступа - C++

22.06.2009, 13:51. Просмотров 1126. Ответов 5
Метки (Все метки)

Здравствуйте, снова к файлам, такая задача.
Допустим, у меня есть текстовый файл с данными - код, название, количество, и со значениями по умолчанию - 0, пустая строка, 0, соответственно. Как здесь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
ofstream OutWare ("hardware.txt", ios::out);
    if (!OutWare) {
        cerr << "File OutWare cannot be opened\n";
        exit(1);
    }
 
    Hardware blankWare = { 0, " ", 0 };
 
    for (int i=1; i<=100; i++) {
    OutWare << blankWare.number << " " << blankWare.name << " " << blankWare.quantity << " "
    << blankWare.price << endl;
  return 0;
}
Необходимо иметь возможность произвольно апдейтить записи, т.е., например, мне нужно в четвертую строку занести реальные данные. Как при этом перемещаться между записями? Ведь нет определенного размера каждой строки. Пока она пустая, она содержит одно количество символов, заполненная - другое.
Метод write, хоть и пишет структуру полностью, т.е. размер известен, и становится возможным использование метода seekp, но, как уже упоминалось тут Записывается мусор в файл, пишет мусор в файл.
Например, если я пишу так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ofstream OutWare ("hardware.txt", ios::ate);
    if (!OutWare) {
        cerr << "File OutWare cannot be opened\n";
        exit(1);
    }
 Hardware Ware;
 cout << "Введите код: ";
 while(cin>>Ware.number) {
    OutWare.seekp((Ware.number-1)*sizeof(Ware));
    cout << "Введите название и количество: ";
    cin >> Ware.name >> Ware.quantity;
    OutWare.write(reinterpret_cast<char*>(&Ware), sizeof(Ware));
    cout << "Enter the number: ";
    }
в файле мусор, а если убрать write и писать
C++
1
OutWare << Ware.number << " " << Ware.name << " " << Ware.quantity << endl;
- в файле полный беспорядок (что естественно, поскольку seekp здесь неправильно работает).
Как в этом случае поступить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru