• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Почему файл пустой?

  • Автор темы Guest
  • Дата начала
G

Guest

Вроде бы делаю всё верно...
Объявлен массив структур

C++:
struct book {
int index;
char title[20];
char autor[20];
int publdate;
int number;
} lib [SIZE];

Заполняю массив

C++:
	cout << "Порядковый номер книги -> ";
cin >> lib[i].index;
cout << "Название книги -> ";
cin >> lib[i].title;
cout << "Автор книги -> ";
cin >> lib[i].autor;
cout << "Год издания книги -> ";
cin >> lib[i].publdate;
cout << "Количество -> ";
cin >> lib[i].number;

Дальше сохраняю в бинарном режиме

C++:
  FILE *out;
char fname[20];
printf("Введите имя файла\n");
scanf("%s", &fname);
if ((out = fopen (fname, "wb")) == NULL)
{
printf("Ошибка открытия файла\n"); 
getch();
return;  
}
fwrite(&lib, sizeof(lib), SIZE, out);
fclose(out);
 

Вложения

  • LB_11_8.CPP
    4 КБ · Просмотры: 311
Y

Yerty

Незнаю, он может потому что есть '\0' тогда несохраняется. Я :)
 
R

RocknRolla

Попробуй напистаь функцию для записи структуры в файл:
void writestructure(ofstream out, strutct lib)
{
out<<lib.index;
/*----
*/
}
 
A

astronom

Выделяйте временный буфер, туда, в цикле, копируйте по одной структуре и сохраняйте в файл.
Ибо, где гарантия, что память под структуру выделяется непрерывно?
 
A

Ambroyz

сразу вижу 1 ошибку: прототип функции записи в файл
Код:
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
1й аргумент указатель на буфер, в Вашем коде указатель на указатель первый элемент, т.к. имя массива является указателем
К тому же, хотя бы лично для себя поставили проверку возврашаемого значения этой функции, оно покажет сколько функция записала в файл.

2astronom
Насколько я помню, массивы всегда выделяются непрерывно, во всяком случаев виртуальном адресном пространстве.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!