Jakub L. Programista
Temat: Pytanie
Jarek Karciarz:
Również nie polecam memcpy(). Mogą wystapić bajty z zerem binarnym, który jak wiadomo oznacza koniec łańcucha. Wtedy twoje dane zostaną obcięte. Chyba, ze osobno podasz długość
Od kiedy?
całego bufora, wtedy #pragma pack załatwi sprawę.
Ogólnie, jesli chcesz przenosić struktury na tekst i odwrotnie, to dla każdego typu danych występującego w strukturze, musisz dostarczyć funkcję konwertującą dany typ na tekst i odwrotnie.
Ogólnie, to char* niekoniecznie musi być tekstem, tylko oznaczeniem wskaźnika do obszaru pamięci mierzonego w 8 bajtowych jednostkach.
Jak się nie będzie tykało tego funkcjami str*, będzie spoko.
Wtedy będziesz mógł przenosić pomiędzy róznymi maszynami i
systemami. To nie jest trywialne zadanie i mocno zależy od costam costam. Myślę, że pomysłodawcy nie chodziło o zwykłe memcpy, bo wtedy wystarczy użyć #pragma, podac adres i rozmiar struktury
i adres rzutować ze struct * na char*. Na pewno nie o to chodziło.
Myślę że jednak mu chodziło.
Jak widać studenty mają a tym problemy, i jakoś muszą się nauczyćrobić tak proste rzeczy (dla tych, którzy już to robili), żeby potem mogli się trykać z endianness, alignmentem i tym podobnymi pierdołami.
A przed webservices, xml, soap i json była jeszcze CORBA :)