이게 안되면 하나하나 자릿수 구해서 정수형, 실수형 등 다 노가다로 해야 되는데... 난감하네
===================================================
....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자.
===================================================
test2 데이타값을 test1구조체로 옮기려면 노가다 작업을 해야 될꺼 같은데요.
(atoi(), strlen())
다른 방법은 없을까요?
===================================================
....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자.
===================================================
C에서 포인터끼리 형
C에서 포인터끼리 형 변환하는 건 다 될 겁니다.
printf("a = %d\n",
printf("a = %d\n", test1->a);
하니까 쓰레기값이 나오네요.
이게 안되면 하나하나 자릿수 구해서 정수형, 실수형 등 다 노가다로 해야 되는데... 난감하네
===================================================
....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자.
===================================================
/* ....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자. */
예, 형 변환은 되지만
예, 형 변환은 되지만 그냥 같은 메모리 주소를 참조하고 있을 뿐이므로
논리적인 뜻은 보존되지 않습니다.
test2 데이타값을
test2 데이타값을 test1구조체로 옮기려면 노가다 작업을 해야 될꺼 같은데요.
(atoi(), strlen())
다른 방법은 없을까요?
===================================================
....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자.
===================================================
/* ....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자. */
없습니다.
(냉무)
쓰레기값이 나오는
쓰레기값이 나오는 것이 아닙니다. '1', '2', '3', '4'(4byte)가 int(4byte)형으로 계산되서 나온 결과입니다.
직접 확인해보고 싶으시면,
이렇게 하셔서 test를 print해보시면 결과가 똑같으실 겁니다.
pointer 형변환을 한다고 해서 해당 pointer가 참조하고 있는 data가 변경되는 것은 아닙니다.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
1. 구조체 A typedef
1. 구조체 A
typedef struct
{
int a;
char b[20 + 1];
double;
} TEST;
TEST *test1;
2. char test2[255] = "12345678222222222333344444444433333";
test1 = (TEST *)test2;
답글 감사합니다.
--------------------------------------------------------------
test1은 형변환된(TEST *) test2 데이타를 기리키고 있습니다.
제가 원한는건 test1구조체
첫번째 멤버변수에는 정수형 숫자가 채워져야합니다.
두번째 멤버변수(b[20+1])에는 test2 데이터 20자리가 채워져야 합니다.
세번째 멤버변수에는 실수형 숫자가 채워져야합니다.
위 모든 작업은 test2 데이타 값이 해당 형으로 변환되면서 이뤄져야합니다.
노가다로 strlen(), atoi(), atol() 이런 함수를 써서 할수도 있지만
포인터를 이용해서 하고 싶습니다.
답글에는 test2 데이타만 조작하고 있는걸로 이해가 되는데요.
**** test2 데이타를 가져다가 test1 구조체 멤버변수들에서 사용할수 있게 하는게 질문입니다.
===================================================
....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자.
===================================================
/* ....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자. */
ㅎㅎ 그랬군요.
ㅎㅎ 그랬군요. 구조체는 단순히 여러 type을 만들어주는 기능을 하는 것이지, 자동으로 뭔가 해주는 기능은 없습니다. 또한 pointer도 memory address를 저장하는 변수이지 이게 무언가를 해주는 것은 없습니다.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
형변환은 되지만
+/- 기호라든지 구조체 원소 사이의 공간이라든지 그런 내용은 원했던대로 되지는 않을 것 같네요
데이터는 보존되지
데이터는 보존되지 않나요?,
소켓 프로그래밍 시에 sockaddr, sockaddr_in 구조체간의 변환 처럼요.
(sa_data -> sin_port, sin_addr, sin_zero)
형 변환 시 타입에 맞게 데이터가 들어가도록 하려면,
형 변환 이후 자료형에 해당하는 char 변수의 오프셋에 아스키 값을 직접 넣어주셔야 하지 않을까 싶습니다.
=============
박찬암 (hkpco)
http://hkpco.kr/
=============
박찬암 (hkpco)
http://hkpco.kr/
댓글 달기