포인터 값을 가져 와서 문자열에 저장하는 방법을 찾고 있습니다. C에서 그렇게 할 수있는 방법이 있다고 생각합니까? (* 값에 의해 나는 % p를 사용하는 printf로부터 얻는 것을 의미한다). 도움을 주셔서 감사합니다.포인터 값을 저장하는 방법 (C)
* 예에서 cplusplus.com ->의 printf ("%의 P", a) - "%p"
포맷> b8000000
포인터 값을 가져 와서 문자열에 저장하는 방법을 찾고 있습니다. C에서 그렇게 할 수있는 방법이 있다고 생각합니까? (* 값에 의해 나는 % p를 사용하는 printf로부터 얻는 것을 의미한다). 도움을 주셔서 감사합니다.포인터 값을 저장하는 방법 (C)
* 예에서 cplusplus.com ->의 printf ("%의 P", a) - "%p"
포맷> b8000000
사용 sprintf
또는 snprintf
. 예를 들어
:
char s[40];
int obj = 42;
int *ptr = &obj;
snprintf(s, sizeof s, "%p", (void*)ptr);
즉 "%p"
형식 지정자에 의해 예상되는 유형이기 때문에 void*
에 캐스트가 필요합니다.
출력의 너비는 시스템에 따라 다르지만 40 자보다 넓지는 않습니다.
snprintf
의 반환 값을 확인하여 대상 배열이 실제로 충분히 길 었는지 확인할 수 있습니다 (설명서 참조).
답장을 보내 주셔서 감사합니다. 저건 완벽 해. 나는 도서관 기능을 사용하지 않고 주소를 알아낼 수있는 방법이 있습니까? 나는 내가 아직 배우지 않고 가능한 한 완벽하게 이해하지 못하는 몇 가지 기능을 사용하는 것을 선호 할 수있다. 그러나 그것이 불가능하다면 그것은 이미 아무것도 아닌 것보다 훨씬 낫습니다! –
@LuciDyevan : 가능 합니다만, 이런 식으로 라이브러리를 사용하지 않을 이유가 없습니다. –
라이브러리를 사용하는 것이 훨씬 쉽다면 고맙습니다. 그럼 불평하지 않을 것입니다! –
처음이 시간이 아니라고 확신합니다. – user2864740
질문을 명확히하고 좀 더 자세히 알아볼 필요가 있습니다. 이것은 꽤 기본적인 작업입니다. – JonS
"포인터의 주소"란 포인터 개체의 주소 또는 포인터 개체의 * 내용 * (주소이기도 함)을 의미합니까? 그리고 왜 그것을 char 배열에 저장하고 싶습니까? 인간이 읽을 수있는 포인터 표현을 원한다는 뜻입니까? –