亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題. [打印本頁]

作者: lizhenjia    時(shí)間: 2003-12-02 11:12
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
char s[20];
char *p = NULL;

一個(gè)字符串變量s保存地址: strcpy(s, "f22b0000";
一個(gè)指針變量p = (char *)malloc(10000);
那么計(jì)算如何得到p的地址和s所保存的地址之間的差值呢?
作者: lenovo    時(shí)間: 2003-12-02 11:27
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
原帖由 "lizhenjia" 發(fā)表:
ar *p = NULL;

一個(gè)字符串變量s保存地址: strcpy(s, "f22b0000";
一個(gè)指針變量p = (char *)malloc(10000);
那么計(jì)算如何得到p的地址和s所保存的地址之間的差值呢?

把它們直接相減就可以了。不過這樣做有什么意義嗎?
  1. #include <stdio.h>;

  2. int main()
  3. {
  4.         char s[20];
  5.         char *p = NULL;
  6.         strcpy(s, "f22b0000");
  7.         p = (char *)malloc(10000);
  8.         printf("%0xd\n",p - s);
  9.         return 0;
  10. }
復(fù)制代碼

作者: kingld    時(shí)間: 2003-12-02 14:32
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
使用strtoll將s轉(zhuǎn)化為16禁止
char   stop[20]
strtoll(s,&stop,16)
作者: lizhenjia    時(shí)間: 2003-12-02 15:17
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
to :lenovo   
我現(xiàn)在不是要把他們打印出來,而是根據(jù)這個(gè)差值作為偏移量加到另外的一個(gè)指針變量得到新的地址,如何用變量表示呢?如果地址比較大用strtol好像不行,比如fe650000,printf("%x\n", strtol("fe650000", NULL, 16))d的數(shù)據(jù)就不對了。
fe650000
作者: lenovo    時(shí)間: 2003-12-02 15:21
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
原帖由 "lizhenjia" 發(fā)表:
to :lenovo   
我現(xiàn)在不是要把他們打印出來,而是根據(jù)這個(gè)差值作為偏移量加到另外的一個(gè)指針變量得到新的地址,如何用變量表示呢?如果地址比較大用strtol好像不行,比如fe650000,printf("%x\n", strtol("fe65000..........

我還是沒看怎么明白。
你要是把指針變量加起來就直接加呀。
作者: lizhenjia    時(shí)間: 2003-12-02 15:28
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
我得意思:
strcpy(s, "fe650000";
p = (char *)malloc(10000),假設(shè)p的地址是fe640000
現(xiàn)在我要計(jì)算s的地址和p的差,并付給另外一個(gè)指針變量!
是不是應(yīng)該這樣:p1 = strtol(s, NULL, 16) - p;
不過現(xiàn)在的問題是地址太大,strtol操作的結(jié)果顯然不對,有沒有正確計(jì)算差值并付給p的辦法呢?
作者: lenovo    時(shí)間: 2003-12-02 15:33
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
原帖由 "lizhenjia" 發(fā)表:
我得意思:
strcpy(s, "fe650000";
p = (char *)malloc(10000),假設(shè)p的地址是fe640000
現(xiàn)在我要計(jì)算s的地址和p的差,并付給另外一個(gè)指針變量!
是不是應(yīng)該這樣:p1 = strtol(s, NULL, 16) - p;
不過現(xiàn)在的?.........

你直接把它們相減然后賦值不行嗎?
作者: lizhenjia    時(shí)間: 2003-12-02 15:41
標(biāo)題: 問一個(gè)字符串和16進(jìn)制數(shù)計(jì)算的問題.
strtol("fe640000
", NULL, 16) 's result is error!!!




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2