Автор Тема: Обяснение...  (Прочетена 1356 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

svilen88

  • Newbie
  • *
  • Благодарности
  • -Казани: 4
  • -Получени: 0
  • Публикации: 19
Обяснение...
« -: 18 Февруари 2013, 22:30:22 »
Нужно ми е малко обяснение, какво трябва да значи следното нещо: (char*)&buf, като buf e структора.

borovaka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 1
  • -Получени: 48
  • Публикации: 906
Re: Обяснение...
« Отговор #1 -: 19 Февруари 2013, 08:21:53 »
Значи указател към елементите на структурата.
Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Обяснение...
« Отговор #2 -: 19 Февруари 2013, 11:42:38 »
Сложи малко код да видим. От коя страна на знака раявно е този израз. Ако е отляво е референция към указател, ако е в дясно, което като гледам тези скоби е по-вероятно, е кастнат адреса на buf кастнат като указател.
char* p;
int n;
p = (char*) &n;

svilen88

  • Newbie
  • *
  • Благодарности
  • -Казани: 4
  • -Получени: 0
  • Публикации: 19
Re: Обяснение...
« Отговор #3 -: 19 Февруари 2013, 12:34:38 »
Упс, извинявам се, ето я цялата функция, трябваше от началото да я сложа:
Код: C++
  1. void vyvejdane()
  2. {
  3.         book buf;
  4.         fflush(stdin);
  5.         cout << endl << "Vyvedete ime na kniga: ";
  6.         cin.getline(buf.zaglavie,50);
  7.         fflush(stdin);
  8.         cout << endl << "Vyvedete ime na avtora: ";
  9.         cin.getline(buf.avtor,50);
  10.         cout << endl << "Vyvedete godina na izdavane: ";
  11.         cin >> buf.godina;
  12.         cout << endl << "Vyvedete tiraj na knigata: ";
  13.         cin >> buf.tiraj;
  14.         cout << endl;
  15.         file.open(name,ios::binary|ios::app|ios::out);
  16.         if(file.fail())
  17.         {
  18.                 cout << "greshka, ne moje da se otvori faila!" << endl;
  19.                 exit(0);
  20.         }
  21.         file.write((char*)&buf, sizeof(book));
  22.         file.close();
  23. }
Предполагам ще разберете за какво става дума.
Малко ми е Х как записвам информацията в файла (.bin файл, по нагоре в кода има константа name със името на файла).

Да разбирам ли, че със file.write((char*)&buf, sizeof(book)) подавам указателя към елементите?, след това големината на структората.
« Последна редакция: 19 Февруари 2013, 12:40:40 от svilen88 »

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Обяснение...
« Отговор #4 -: 19 Февруари 2013, 13:35:30 »
Подаваш указател към структората buf, която е от тип book.