Zeigeradresse C ohne printf

stimmen
0

Ich brauche die Adresse eines Zeigers (im Grunde Umkodierung% p), aber ohne die Verwendung von printf zu drucken und nur Schreib erlaubt ist, wie kann ich es tun? Könnten Sie mir einige Hinweise geben? Vielen Dank

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

Veröffentlicht am 13/01/2020 um 23:51
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Für Ihren Zweck, müssen Sie nur den Zeigerwert zu Hex-Darstellung und schreibt, die auf den POSIX-Dateideskriptor konvertieren:

#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));
}
Beantwortet am 14/01/2020 um 17:06
quelle vom benutzer

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