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

Создать файл в C++ - C++

Восстановить пароль Регистрация
 
pi_X_el
Заблокирован
07.02.2013, 16:56     Создать файл в C++ #1
Нужно создать текстовый файл и в нем будет 100 записей структуры clientData


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct clientData
{
    int acctNum;
    char lastName[20];
    char firstName[20];
    float balance;  
};
 
 
int main()
{
    std::ofstream fCredit.open("credit.dat", std::ios::out);
    
    return 0;
}

Какой вариант лучше использовать?

вариант 1:
fCredit.write((const char *)&client, 100*sizeof(client));

вариант 2:
for (int i=1; i<=100; i++)
fCredit.write((const char *)&client, sizeof(client));

Добавлено через 1 минуту
C++
1
clientData client = {0, "", "", 0.0};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2013, 16:56     Создать файл в C++
Посмотрите здесь:

Есть файл f, c целыми числами. Создать новый файл g где все компоненты файла f в квадрате. C++
Дан файл,компонентами его яв-ся числа.Число компонент делится на 2.Создать новый файл,куда будет записываться наименьшее из каждой пары чисел 1 файла C++
Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке C++
C++ создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы.
C++ Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
07.02.2013, 17:42     Создать файл в C++ #2
pi_X_el, 1 вариант быстрее. А фактически, результат будет одинаковым.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
07.02.2013, 18:02     Создать файл в C++ #3
std::ios::binary не забудь.
pi_X_el
Заблокирован
07.02.2013, 18:42  [ТС]     Создать файл в C++ #4
Спасибо.

У меня еще один вопрос есть. Почему при таком способе записи в файле оказывается сплошной мусор?

C++
1
2
3
4
5
6
std::fstream fCredit;
clientData client = {0, "", "", 0.0};
 
fCredit.open("credit.dat", std::ios::in | std::ios::out | std::ios::binary);
 
fCredit.write((const char *)&client, 100*sizeof(client));
Добавлено через 7 минут
А когда через цикл делаешь, то все нормально:

C++
1
2
for (int i=1; i<=100; i++)
    fCredit.write((const char *)&client, sizeof(client));
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
07.02.2013, 19:16     Создать файл в C++ #5
Так в варианте с write пишется область памяти размером в 100 структур, а в цикле на каждой итерации пишешь одну и ту же client.
Yandex
Объявления
07.02.2013, 19:16     Создать файл в C++
Ответ Создать тему
Опции темы

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