c語言中IP位址的型別轉換

2025-07-19 04:35:23 字數 3059 閱讀 4358

1樓:網友

你要知道你平常用的ip位址存入計算機並不是點分形式的,是uint32型別的,當你需要取得這個點分形式的ip位址,你需要呼叫inte_ntoa,他的引數是in_addr,你要知道in_addr不是乙個基本型別,它是乙個結構體,裡面有個成員,你把他的值設成那個uint32型別的ip,再呼叫inet_ntoa,算的結果就是點分形式的ip了。

求乙個c語言 十進位數字轉換成ip位址 比如688888888轉換成ip 謝謝!

2樓:網友

void ipv4_to_str(char *addr_str, unsigned int ipv4_addr)

前提是保證傳入的addr_str有足夠的空間。

3樓:知即死

#include

#include

int main()

/測試平臺為小端模式,大端模式將3210變成0123sprintf_s(str_ipaddr, sizeof(str_ipaddr), "%u.%u.%u.%u",ptr_uc[3], ptr_uc[2], ptr_uc[1], ptr_uc[0]);

printf("%s", str_ipaddr);

system("pause");

return exit_success;}

c語言中ip位址是什麼型別的變數

4樓:網友

#include

#include

using namespaces std;

#pargma comment(lib, "ws2_32")typedef struct ipstructipstruct, *pipstruct;

我估計我這個結構你不會給分的,因為用起來可能有點複雜,不過這個是最標準的由winsock提供的結構。

5樓:網友

結尾有\0的字元指標。

c語言以ip位址形式輸出

6樓:網友

ip位址是以表示。

而此程式則是將二進位轉化為十進位,即將乙個32位的數轉換為十進位輸出,先二進位數分為4個整體,每個整體有8個數,而其中的bin_dec()是將這個二進位數轉換為十進位,且利用遞迴呼叫求出。

下面是for (i = 0; i < 8; i++)轉換的乙個例子(列乙個就行了,其餘的都一樣)設輸入二進位數11111111 則bin_dec(2,7)--2*bin_dec(2,6)--2*bin_dec(2,5)--2*bin_dec(2,4)--2*bin_dec(2,3)--2*bin_dec(2,2)--2*bin_dec(2,1)--2*bin_dec(2,0)

從而逆向推出 bin_dec(2,7)=255則ip:

c語言中ip位址取整

7樓:

sscanf() 從乙個字串中讀進與指定格式相符的資料。

函式原型:int sscanf( string str, string fmt, mixed var1, mixed var2 ..

sscanf與scanf類似,都是用於輸入的,只是後者以鍵盤(stdin)為輸入源,前者以固定字串為輸入源。

其中的format可以是乙個或多個 ]type | ' ' | '\t' | '' | 非%符號}

注:1、 *亦可用於格式中, (即 %*d 和 %*s) 加了星號 (*表示跳過此資料不讀入。 (也就是不把此資料讀入引數中)

2、表示a,b,c中選一,[d],表示可以有d也可以沒有d。

3、width表示讀取寬度。

4、:引數的size,通常h表示單位元組size,i表示2位元組 size,l表示4位元組size(double例外),l64表示8位元組size。

5、type :這就很多了,就是%s,%d之類。

6、特別的:%*width] type 表示滿足該條件的被過濾掉,不會向目標引數中寫入值。

支援集合操作:

a-z] 表示匹配a到z中任意字元,貪婪性(儘可能多的匹配)

ab'] 匹配a、b、'中一員,貪婪性。

^a] 匹配非a的任意字元,貪婪性。

它強大的功能體現在對format的支援上。

例如你程式中要分離ip位址,由於ip位址欄位以「。」分隔,所以可以通過設定格式化形式分離,正如你寫的。

則192會被分離寫入x[0],168則分離寫入x[1],如下的對應,所以你所說的情況不會出現。

c語言將ip位址的二進位形式轉化為十進位的形式

8樓:網友

#include

int main()

erdn[8]=;

char a[32];

printf("請輸入32位二進位數 ;");

scanf("%s",&a);

for(i=0;i<8;i++)

for(i=8;i<16;i++

for(i=16;i<24;i++)

for(i=24;i<32;i++)

for(i=0;i<4;i++)

return 0;}

9樓:網友

#include ""

void main()

*查詢表*/

int temp;

int sum;

int i;

int m;

printf("請輸入32位二進位數字:");

for(i=0;i<32;i++)

scanf("%c",&a[i]);

scanf("%s",a);*/ /*可以按字串輸入,字串輸入是要注意末尾的\0*/

printf("輸入的二進位數字是:");

for(i=0;i<32;i++)

printf("%c",a[i]);/*顯示輸入二進位資料,也可按串輸入*/

for(i=0;i<4;i++)

b[i]=sum;

for(i=0;i<3;i++)

printf("%d",b[i]);

C語言中強制型別轉換這樣寫對嗎?int i,j double s 0 0 s s 1 0 i

可以 s s 1.0 i j 或者 s s double i j include double b2d char s int main void return 0 double b2d char s return n 肯定可以啊!因為1.0是實數,i和j是整數。實數和整數一起運算的時候,整數要先轉化...

c語言中函式指標的強制型別轉換有什麼作用

如果你把sub函式bai改為int sub int a,int b,int c,int d,int e,int f,int g,int h 你就會發現後面du那幾個引數 就zhi變得不dao正常,道理很簡單,版引數push過少,函權數傳遞引數是把引數push進堆疊,在函式題裡面再pop出來,至於什麼...

c語言中的func型別是什麼,在C語言中,FUNC是什麼意思?

在c語言中沒有func型別,func一般是自定義函式的函式名 函式 的英語翻譯回 function 如以下 答 include int func int a 定義函式,函式名為funcvoid main 在這段 定義了函式func 其作用是返回a 1的值。沒有這個型別 這是一般書本里面用來給自定義函...