簡體   English   中英

strtoul() 沒有按預期工作?

[英]strtoul() not working as expected?

我正在嘗試將諸如“0x7ffd01767a60”之類的字符串轉換為十六進制,以便我可以比較指針。 不確定這是否是最好的決定。

我正在這樣做:

    char *address = "0x7ffd01767a60";

    strtol(address,NULL,16);
    printf("%lp",address);

我得到這個:0x7ffd01764120

編輯:似乎我正在打印字符串地址而忽略函數返回。 謝謝詹斯! 和 schlenk。

解決了! 這就是我所做的

    char *address = "0x7ffd01767a60";
    void *p;
    unsigned long int address_hex = strtol(address,NULL,16);
    p = (void*) address_hex;

    printf("%p",p);

printf 打印相同的內存地址。

您正在打印字符串本身的地址,同時忽略strtoul()函數調用的結果。 這應該有效:

const char *address = "0x7ffd01767a60";

unsigned long int address_hex = strtoul(address, NULL, 16);
// Check for errors in errno
printf("%lx\n", address_hex);

此外,我個人更喜歡代碼盡可能明確,這就是我傳遞16作為基本參數的原因。

注意:請閱讀有關返回值的文檔,以確保正確識別錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM