char[512]와 같은 문자열 배열에 여러가지 정보를 담고싶으데...
글쓴이: ljksky / 작성시간: 월, 2003/04/14 - 10:32오후
char[512]같은 문자열 배열에 여러가지 정보를 담고 싶거든요.?
예를 들면...
전화번호 15자리
이름 20자리
아이피 15자리
포트 4자리
기타정보 200자리..
..
..
등등...
이렇게 자리수는 정해져있는데..
이런 문자열 배열을
소켓으로 받아 정보를 뽑아내서 사용해고
보낼때는 자리수에 맡게 배열에 넣고..
제 생각엔 구조체를 만들어서 하는게 더 좋은것
같은데.. 여의치 않아서.. 배열로 보내야 합니다..
루프 돌면서 한바이트씩 읽고 쓰는 방법이 떠오르지만..
그 보다 좋은 방법이 있지 않을까 해서 글 올립니다..
Forums:
한 번에 다 읽어서 나누실꺼면 memcpy를 사용하시는건 어떠신지..
한 번에 다 읽어서 나누실꺼면 memcpy를 사용하시는건 어떠신지..
어차피 루푸야 돌아야 겠지만 그래도 눈에는 안보인다는..
이런거 말씀하신거 아닌가요..?
#include <string.h>
memcpy(void * target, const void * source, size_t nbytes)
char phone[16];
char name[21];
...
memcpy(phone, data, 15);
phone[15] = 0;
memcpy(name, data+15, 20);
name[20] =0;
...
이런거 말씀하신거 아닌가요..?
[code:1] char data[512];
뭐 입력할때 자리 맞춰서 memcpy를 data에 해주시고 읽을땐 data에서 각변수로 받으면 되지 않을까요?
좀무식한가? ㅡㅡa[/code]
평온하다~
구조체 쓰셈
일단,
typedef struct
{
char name [20];
char gender;
int id;
...
...
} PERSON;
캐릭터 포인터 char * ptr에 PERSON형 구조체 per을 강제 캐스팅해서,
ptr = ( char * ) & per;
ptr을 보내면 됩니다. 포인터가 해답이지용.
최후의 최후까지 바짝 잡고 있어라!
구조체에 바이너리 데이터를 보내신다면...
padding도 신경쓰셔야겠죠.
전부 char 의 원소로만 되어있다면야 상관없겠지만, int같은 데이터가 있다면 padding 을 신경쓰지 않아주면 안되죠?
========================================
* The truth will set you free.
정해져 있으면 .. 그냥 편할텐데..
음.. 모든 자릿수가 정해 져 있는게 아니라면..
엔드 비트를 인위적으로 집어 넣어주는것도 괜찮을껏
같습미다.. '\n' 같은 걸로 해주면 스트링 함수로 한줄로
읽어 올수 있고 편할껏 같은데요..
다음과 같은 데이타 구조가 될것입미다..
" '1','2','3','\n','고','길','동','\n','a','b','c' ,'\n' "
위에처럼 순서대로 한줄씩 순서대로 뽑아주면
편하지 않을까요... 문자열 구조의 이점을 살려서..
아주 단순한 구조인데..
============================================================
선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-
============================================================
Re: char[512]와 같은 문자열 배열에 여러가지 정보를 담고싶으
구조체를 쓰면 안되는 이유가 있나요?
패딩때문입니다.
컴파일 옵션에 따라 패딩 규칙이 변화가 있기 때문입니다.
컴파일 옵션을 따로 주면 모를까구조체 멤버가 모두 char 이면.
컴파일 옵션을 따로 주면 모를까
구조체 멤버가 모두 char 이면..
패딩에 영향을 안받던데요..
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기