• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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 КБ · Просмотры: 314
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
Насколько я помню, массивы всегда выделяются непрерывно, во всяком случаев виртуальном адресном пространстве.
 
Мы в соцсетях:

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