write함수에 관해서 질문드립니다.
글쓴이: blugon97 / 작성시간: 일, 2003/11/30 - 11:53오후
예를 들어
typedef struct
{
unsigned short a;
unsigned int b;
char c[100];
} msg_t;
msg_t msg = {1, 2, "3"};
이런 구조체를 write함수를 써서 파일에 쓴다음 read를 써서 파일에서 읽어드
려 msg_t 타입의 구조체에 저장하는게 가능한가요?? 어떤 프로토콜에 쓰이는 메시지를 정의하기 위해서 필요하거든요. 다른 방법이 없어서 임시적으로 sprintf를 써서 char 배열에 저장한뒤 write, read 배열을 확인해보니 "123" 이라는 값이 들어가 있습니다. 저는 메모리에 short 2바이트 int 4바이트 char ?바이트 이런식으로 잡히길 원했는데 그냥 char단위로 "123" 3바이트가 잡혔습니다. 이런 결과를 원한게 아니었거든요. 조언 부탁합니다.
Forums:
왜 sprintf 를 사용하죠?[code:1]fwrite (
왜 sprintf 를 사용하죠?
fwrite ((void*)&msg, sizeof(msg_t), 1, fp);
fread ((void*)&msg, sizeof(msg_t), 1, fp);
음, 물론 그냥 write, read 로도 가능은 하고요..
그리고 구조체가 메모리에 잡히는게
4바이트(32비트겠죠?) 단위에서 끊어지던데
실제 구조체 멤버별 크기 말고 sizeof로 통째로 묶은 크기가 좀 더 큰..
무슨 옵션을 써서 낭비없이 사용하던 것 같은데 그거까진 모르겠네요..
[quote="fliers"]그리고 구조체가 메모리에 잡히는게4바이트
어? 정말 이런 옵션이 있나요?
저는 단지 프로그래머가 알아서 '잘' 잡는 것으로만 해결 가능하다고 알고 있었는데..
예를 들어,
이런 코드의 경우,
이렇게 해서 말입니다.
혹시 fliers 님이 말씀하신 옵션... 아시는분 계시나요?
[url]http://bbs.kldp.org/viewtopic.php?t
http://bbs.kldp.org/viewtopic.php?t=25&highlight=pragma
우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자
댓글 달기