Отговори на тема  [ 6 мнения ] 
Структури проблем !!! 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 6:26 pm
Мнения: 609
Мнение Структури проблем !!!
Здравейте
Имам няколко въпроса относно код на С.
Код:

typedef enum {
                      X1=0,
                      X2,
                      X3,
                     ...
                     } Xtype
typedef struct {
                     ....;
                     ....;
                     Xtype Ytype;
                     ...;
                     }Y_record;

func1(){
          Y_record rec;
          ...
          rec.Ytype=X2;

      };

func2(FILE *pfile,Y_record *rec){

fprintf( pfile, "...%02d", ... , ... ,rec->Ytype);

};



Ползвам Борланд. Показал съм само това което не работи според очакванията. Явно имам празноти в главата :( . Имам спомени че съм ползвал същата подредба и в друг компилатор и не съм имал проблем ...
Така съм конструирал програмата че е невъзможно да променям нищо, без да почна от начало...
Зареждам данни към модул. Данните ми вървят в пакети, като пакета който изпращам е структура от данни. подредбата на данните е една и съща, само
данните могат да бъдат различни, без да нарушават пакета.
Всичко ми работи ОК, с изключение на това че при писането във фаила - Y_type ми изкарва нещо съвсем друго ... вместо 01
и за да е по гадно излизат повече знаци - цели 6 знака вместо 2.
Да добавя, че компилатора не ми дава нищо ... поне един варнинг да изреве.

_________________
Вниманиене съмвишист....ИЙ.


Сря Юли 20, 2022 7:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 12:48 pm
Мнения: 4410
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Структури проблем !!!
Що не туриш едно...., ( int)rec->Ytype);

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Сря Юли 20, 2022 8:15 pm
Профил
Online
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Съб Фев 06, 2016 7:29 pm
Мнения: 171
Мнение Re: Структури проблем !!!
... а може би това, което си показал, не е съвсем сорса?

Във ф-цията func1() променливата Y_record rec е локална и каквито и промени да правиш си остават само там във функцията. От къде взимаш pointer-a за да го предадеш на func2?
Друго нещо е fprintf - спецификаторът "%d" очаква да подадеш int, така че е добра практика поне да го cast-ваш.


Сря Юли 20, 2022 8:23 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 6:26 pm
Мнения: 609
Мнение Re: Структури проблем !!!
MYXATA написа:
Що не туриш едно...., ( int)rec->Ytype);

8O 8O 8O Всичко заспа ...
Нормално ли е да питам ЗАЩО???
нали enum си дефинира int.
Всичко друго в структурата си е дефинирано, само enum нямаше причина да го указвам като int.
какво ли не опитвах.
Огромни благодарности.

iss написа:
... а може би това, което си показал, не е съвсем сорса?

Във ф-цията func1() променливата Y_record rec е локална и каквито и промени да правиш си остават само там във функцията. От къде взимаш pointer-a за да го предадеш на func2?
Друго нещо е fprintf - спецификаторът "%d" очаква да подадеш int, така че е добра практика поне да го cast-ваш.

втората функция само записва структурата във файла понта предавам като параметър в скобите на функцията.


// Y_record rec е локална и каквито и промени да правиш си остават само там във функцията.

При мен промяната се записва в структурата , и изчезва само предефинирания rec.
дефинирам си нов rec във втората функция и си изваждам вече промененото значение. Ползвам едно и също rec ... защото се забърквам много

_________________
Вниманиене съмвишист....ИЙ.


Сря Юли 20, 2022 8:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 12:48 pm
Мнения: 4410
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Структури проблем !!!
Защото С езика е много добър ако му казваш какво точно да прави :)
В твоят случай, не му е ясно как да ти конверира енума, така че казвайки му - тази променлива е интерпретирай като инт, след това fprintf-a знае как да ти принтне стойността.
И между впрочем противно на заглавието на темата, това не е проблем със структурите, борланд и т.н.
Трабва си четене.

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Чет Юли 21, 2022 12:57 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Вто Окт 25, 2005 9:54 am
Мнения: 866
Мнение Re: Структури проблем !!!
Проблема ти е че си мислиш че е енума е инт, а той е толкова голям колкото реши компилатора, така че да побере максималната му стойност.


Чет Юли 21, 2022 6:42 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни