ceckovy kviz

tomas mainzer t.mainzer na gmail.com
Pondělí Září 4 08:36:40 CEST 2023


char str[20];
strcpy(str,"abc");

sizeof("abc") vraci 4   - tj o 1 vice nez je chteno
sizeof(str) vraci 20  - tj. fixne 20, i kdyz ulozeny string je mensi




po 4. 9. 2023 v 7:44 odesílatel wek <konfera na efton.sk> napsal:

> Hm tak to som sice neskusil, mal som tam vzdy len "xyz",  ale preco by  v
> tom mal byt rozdiel?
>
> wek
>
>
> On 4 September 2023 00:51:28 CEST, tomas mainzer <t.mainzer na gmail.com>
> wrote:
>
>> sizeof(retazec)   - tady zavisi co mu predhodite - string constant
>> ("xyz")  vs array (char str[8]) - a ani jedno nebude fungovat uplne
>> korektne (resp. dle "ocekavani").
>>
>>
>>
>>
>> ne 3. 9. 2023 v 23:00 odesílatel Jan Waclawek <konfera na efton.sk> napsal:
>>
>>> Mam funkciu
>>>
>>>   void LcdBPrint(uint32_t x, uint32_t y, char * s);
>>>
>>> ktora vypise retazec na LCD s rozmermi LCD_XMAX, LCD_YMAX na poziciu x, y
>>> pixelov od laveho horneho rohu.
>>>
>>> Vypisuje to neproporcionalnym fontom s rozmermi znaku FONT_XSIZE,
>>> FONT_YSIZE.
>>>
>>> Z nejakych dovodov chcem vypisovat retazce zarovnane jeden za druhym; ale
>>> niekedy chcem vypisovat retazce pod seba zarovnane na pravy okraj. To
>>> prve
>>> vedie na volania typu:
>>>
>>>   LcdBPrint(doteraz_napocitane_znaky_od_laveho_okraja * FONT_XSIZE,
>>> riadok
>>> * FONT_YSIZE , retazec);
>>>
>>> a to druhe na
>>>
>>>   LcdBPrint(LCD_XMAX - strlen(retazec) * FONT_XSIZE, riadok * FONT_YSIZE,
>>> retazec);
>>>
>>> Vravim si, takto je to dost neprehladne, a pritom sa tam to nasobenie
>>> furt
>>> opakuje. A tiez, tie dve veci su navzajom dostatocne podobne. Tak co keby
>>> ze si napisem makro, do ktoreho bud zadam kladne x, co znamena pocet
>>> znakov od laveho okraja, alebo zaporne x, co znamena pocet znakov od
>>> praveho okraja:
>>>
>>>   #define LcdBXPrint(xx, yy, s) LcdBPrint( (((xx) < 0) ? LCD_XMAX : 0) +
>>> (xx) * FONT_XSIZE, (yy) * FONT_YSIZE, s)
>>>
>>> Ked pisem zlava, tak mam
>>>
>>>   LcdBXPrint(doteraz_napocitane_znaky_od_laveho_okraja, riadok, retazec);
>>>
>>> co je pekne, prehladne, a funguje. Ale ked pisem zlava, tak
>>>
>>>   LcdBXPrint(-sizeof(retazec), riadok, retazec);
>>>
>>> nefunguje.
>>>
>>> Preco?
>>>
>>> wek
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230904/f8ab17e2/attachment-0001.htm>


Další informace o konferenci Hw-list