[英]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.