printf बिना सूचक पता सी

वोट
0

मैं एक सूचक (मूल रूप से recoding% पी) की लेकिन printf का उपयोग किए बिना पता प्रिंट करना होगा और केवल लिखने की अनुमति दी है मैं इसे कैसे कर सकता है? क्या आप मुझे कुछ संकेत दे सकते हैं? धन्यवाद

for example : printf(%p, a); result : 0x7ffeecbf6b60

13/01/2020 को 23:51
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

अपने उद्देश्य के लिए, तुम सिर्फ हेक्स प्रतिनिधित्व और लिखने के लिए सूचक मूल्य बदलने की आवश्यकता है कि POSIX फ़ाइल वर्णनकर्ता रहे हैं:

#include <stdint.h>
#include <unistd.h>

/* output hex representation of pointer p, assuming 8-bit bytes */
int write_ptr(int hd, void *p) {
    uintptr_t x = (uintptr_t)p;
    char buf[2 + sizeof(x) * 2];
    size_t i;

    buf[0] = '0';
    buf[1] = 'x';
    for (i = 0; i < sizeof(x) * 2; i++) {
        buf[i + 2] = "0123456789abcdef"[(x >> ((sizeof(x) * 2 - 1 - i) * 4)) & 0xf];
    }
    return write(fd, buf, sizeof(buf));
}
14/01/2020 को 17:06
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more