Struct değişkenini long değişkene aktarma

Başlatan selimkoc, 01 Ağustos 2017, 10:22:29

foseydon

#15
Bilaharr yazacağım

bymrz

Aynen ben de öyle görmüşüm orayı :)
atanan = (atanan_t *)bb;


Fakat mevcut şekliyle de sıkıntılı

atanan = *(atanan_t *)bb;


yapıldığında da bb'nin ilk değişkenini "atanan"ın ilk değişkenine atayacak. Structure'ın tamamını değil yani. Sadece ilk harfi... Değil mi?

qeek

Hocam benim anlamadığım ben me[2] yaptığımda neden dizinin sonuna kadar alıyor normalde 2 tane alıp durması gerekmiyor mu?

bymrz

#18
Alıntı yapılan: qeek - 03 Ağustos 2017, 11:56:24
Hocam benim anlamadığım ben me[2] yaptığımda neden dizinin sonuna kadar alıyor normalde 2 tane alıp durması gerekmiyor mu?


Dediğim gibi bu printf komutu ile ilgili. texti sonlandırmak için 0x00 karakterini görmek ister. Ya bu dizilerin sonuna kendin 0x00 ekleyeceksin. Yada "putchar" gibi bir komut kullanacaksın. dizi boyutu kadar putchar göndereceksin.

yani şöyle yap mesela :
me[2] değil de me[3] olsun ve printf demeden önce bir yerlerde
me[3]=0x00;  yap.
Ardından printf komutunu gönder...

Klein

Alıntı yapılan: alone_lover - 03 Ağustos 2017, 11:49:41

atanan = *(atanan_t *)bb;


yapıldığında da bb'nin ilk değişkenini "atanan"ın ilk değişkenine atayacak. Structure'ın tamamını değil yani. Sadece ilk harfi... Değil mi?
Hayır.
"atanan" isimli değişken 4 byte ise ,"bb" dizisinin başlangıç adresinden 4 byte aktarır.  burada "bb" dizisinin ya da değişkeninin kaç bayt olduğunun ya da tipinin bir önemi yok.
Eğer struct 4 byte ise tamamını alır.