功能是將乙個點分十進位制的ip轉換成乙個長整數型數(u_long型別)
原型:in_addr_t inet_addr(const char *cp);
引數:字串,乙個點分十進位制的ip位址
返回值:
如果正確執行將返回乙個無符號長整數型數。如果傳入的字串不是乙個合法的ip位址,將返回inaddr_none。
標頭檔案:winsock2.h.
arpa/inet.h(linux)
linux下inet_pton和inet_ntop這2個ip位址轉換函式,可以在將ip位址在「點分十進位制」和「整數」之間轉換。而且,這2個函式能夠處理ipv4和ipv6。算是比較新的函式了。
inet_ntop函式原型如下[將「整數」 -> 「點分十進位制」]
1
2
3
4
#include
#include
#include
const
char
*inet_ntop(
int
af,
const
void
*src,
char
*dst, socklen_t cnt);
這個函式轉換網路二進位制結構到ascii型別的位址,引數的作用和inet_pton相同,只是多了乙個引數socklen_t cnt,他是所指向快取區dst的大小,避免溢位,如果快取區太小無法儲存位址的值,則返回乙個空指標,並將errno置為enospc。 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include
#include
#include
#include
#include
int
main(
int
argc,
char
*argv)
實際執行結果如下:
192.168.0.74 : 192.168.0.74 //從這裡可以看出,printf裡的inet_ntoa(addr2)先於inet_ntoa(addr1)執行。
192.168.0.74
211.100.21.179
inet_ntoa返回乙個char *,而這個char *的空間是在inet_ntoa裡面靜態分配的,所以inet_ntoa後面的呼叫會覆蓋上一次的呼叫。第一句printf的結果只能說明在printf裡面的可變引數的求值是從右到左的,僅此而已。
inet_aton()是乙個改進的方法來將乙個字串ip位址轉換為乙個32位的網路序列ip位址。
2函式概要如下
1
2
3
標頭檔案:#include
#include
#include
完整描述:
1
int
inet_aton(
const
char
*string,
struct
in_addr*addr);
引數描述:
1 輸入引數string包含ascii表示的ip位址。
2 輸出引數addr是將要用新的ip位址更新的結構。
返回值:
如果這個函式成功,函式的返回值非零,如果輸入位址不正確則會返回零。使用這個函式並沒有錯誤碼存放在errno中,所以它的值會被忽略。
——————————————————————————————————————————————
1
2
3
struct
in_addr ;
結構體in_addr 用來表示乙個32位的ipv4位址.
in_addr_t 一般為 32位的unsigned int,其位元組順序為網路順序(network byte ordered),即該無符號整數採用大端位元組序[1]
。.其中每8位代表乙個ip位址位中的乙個數值.
例如192.168.3.144記為0xc0a80390,其中 c0 為192 ,a8 為 168, 03 為 3 , 90 為 144
列印的時候可以呼叫inet_ntoa()函式將其轉換為char *型別. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct in_addr
s_un_b;
//an ipv4 address formatted as four u_chars.
struct
s_un_w;
//an ipv4 address formatted as two u_shorts
u_long s_addr;
//an ipv4 address formatted as a u_long
} s_un;
#define s_addr s_un.s_addr
};
ip位址轉換成字串
from 從網路上接收的ip位址,有時候為了節省空間,用乙個32位無符號整形資料表示ipv4位址。我們接收到之後,又需要轉換成呢個數字和點格式的字串來進行後續的操作。比較勤奮點的人會自己寫個函式做轉換。我屬於比較懶的。不願意做別人已經做過的事情。實際上,在linux裡面,這些轉換都有系統函式完成的。...
字串轉換成整數
題目詳情 輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。請完成函式strtoint,實現字串轉換成整數的功能。友情提醒 提交 之前,請複查下你的程式,比如當給的字串是如左邊所示的時候,有考慮到麼?當然,它們各自對應的正確輸出如右邊所示 假定你是在32位系統...
字串轉換成整數
輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。需要考慮的問題 1.由於整數可能不僅僅之含有數字,還有可能以 或者 開頭,表示整數的正負。2.處理非法輸入。在使用指標之前判斷這個指標是不是為空。3.輸入的字串中可能含有不是數字的字元。4.最後乙個需要考慮的問...