2016-06-27 3 views
-4

포인터 값을 가져 와서 문자열에 저장하는 방법을 찾고 있습니다. C에서 그렇게 할 수있는 방법이 있다고 생각합니까? (* 값에 의해 나는 % p를 사용하는 printf로부터 얻는 것을 의미한다). 도움을 주셔서 감사합니다.포인터 값을 저장하는 방법 (C)

* 예에서 cplusplus.com ->의 printf ("%의 P", a) - "%p" 포맷> b8000000

+0

처음이 시간이 아니라고 확신합니다. – user2864740

+0

질문을 명확히하고 좀 더 자세히 알아볼 필요가 있습니다. 이것은 꽤 기본적인 작업입니다. – JonS

+0

"포인터의 주소"란 포인터 개체의 주소 또는 포인터 개체의 * 내용 * (주소이기도 함)을 의미합니까? 그리고 왜 그것을 char 배열에 저장하고 싶습니까? 인간이 읽을 수있는 포인터 표현을 원한다는 뜻입니까? –

답변

1

사용 sprintf 또는 snprintf. 예를 들어

:

char s[40]; 
int obj = 42; 
int *ptr = &obj; 

snprintf(s, sizeof s, "%p", (void*)ptr); 

"%p" 형식 지정자에 의해 예상되는 유형이기 때문에 void*에 캐스트가 필요합니다.

출력의 너비는 시스템에 따라 다르지만 40 자보다 넓지는 않습니다.

snprintf의 반환 값을 확인하여 대상 배열이 실제로 충분히 길 었는지 확인할 수 있습니다 (설명서 참조).

+0

답장을 보내 주셔서 감사합니다. 저건 완벽 해. 나는 도서관 기능을 사용하지 않고 주소를 알아낼 수있는 방법이 있습니까? 나는 내가 아직 배우지 않고 가능한 한 완벽하게 이해하지 못하는 몇 가지 기능을 사용하는 것을 선호 할 수있다. 그러나 그것이 불가능하다면 그것은 이미 아무것도 아닌 것보다 훨씬 낫습니다! –

+0

@LuciDyevan : 가능 합니다만, 이런 식으로 라이브러리를 사용하지 않을 이유가 없습니다. –

+0

라이브러리를 사용하는 것이 훨씬 쉽다면 고맙습니다. 그럼 불평하지 않을 것입니다! –

관련 문제