문자열 질문 입니다,
글고운
질문 내용 :
char *temp[20];
temp는 포인터 배열로 주었습니다.
memcpy(&insert[tt].GasaMode,temp[3],1);
구조체 를 선언하여 이곳에 값을 대입하려 합니다.
insert[tt].GasaMode 의 형식은 char 형식입니다.
즉 1바이트 이죠.
포인터 배열 temp[3]의 주소값이 가리키는 메모리에 있는 값은 99입니다.
문자열로 되어있는 99를
memcpy(&insert[tt].GasaMode,temp[3],1); 이런식으로 하니 앞자리 9 밖에 가져오지 못하네요..
99를 다 가지고 오고 싶은데 어떻게 하면 좋을가요??
1바이트는 256까지 표현이 가능하여 대입이 가능하다고 하는데 그 방식을 잘 모르겠습니다.
memcpy(&insert[tt].GasaMode,temp[3],1); 이런식으로 메모리를 카피하지 않아도 상관없습니다.
중요한건 구조체 자체를 128바이트로 잡아놧기때문에 1바이트라도 어긋나면 안됩니다..ㅠㅠ
구조체의 바운더리는 다 잡아놨습니다.
이문제만 해결하면 되는데 아직 초보자라자....
고수님들 답변 부탁드립니다
-
설화
상식적으로 생각해 봐야 합니다.
문자열 \99\는 그 자체만으로도 문자 2개이므로 2바이트입니다.
memcpy(), 즉 메모리 카피함수를 이용해 1바이트의 메모리를 카피하는 것인데... 말이 안되죠.
GasaMode라는 변수의 타입이 char이라면 해당 값 즉, 문자열이 아닌 단일 문자로 이용되는 값으로
재설계하여 처리하시던지... 아니면 변수의 타입을 다시 고려해봐야 합니다.
구조체 크기 제약이 있으니 어쩔수 없이 char GasaMode;변수