C語言 ip位址轉換為單個數字

2021-10-08 11:26:02 字數 982 閱讀 8803

今天遇到乙個面試測試題,如下

請寫一段**,可以將輸入為」0.0.0.0」—「255.255.255.255」的字串轉換為int型整數陣列。

輸入:」255.255.255.255」

輸出:255 255 255 255 (陣列)

簡要分析如下

初看不難,但實際大有門道。此題實際考察用c語言對字串的處理,若是單獨的乙個數字字串,比如「255』,將其轉化為數字並不難,方法很多,可以直接使用庫函式atoi,也可以將字串的每一位取出,再減去字元『0』,即得到當前位的真實數值,迴圈使用乘以10加下一位即可,還有其他方法...

但是此題多了乙個小數點分割,所以增加了難度,可以考慮以小數點為定位符,將每一部分取出,一共可取出4個子串,再對每個子串轉換成數字即可,當遇到結束符『\0』即表示分割結束

我的解決方案

// 測試題,輸入255.255.255.255的字串,輸出255 255 255 255 的陣列

char ipstr[15];

int result[4];

void ipstr2num(char *str);

int main(void)

void ipstr2num(char* str)

result[j] = num;

num = 0;

printf("%d \t",result[j]);

if (*str == '\0')

else

}} 執行結果

我看到另一位大佬的解決方案

使用了sscanf函式

#include char str = "255.255.255.255";

int num[4] = ;

int main()

return 0;

}

ip位址轉換數字函式 iton IP位址轉換函式

在ascii字串 192.168.0.99 與網路位元組序的二進位制值間轉換位址。涉及函式的標頭檔案為 include 一 只適用於ipv4協議的函式 int inet aton const char string,struct in addr addr 函式成功,返回值1,否則返回零。將strin...

將IP位址轉換為地方名稱

這裡介紹如何轉換,它使用的是ip位址是10進製的,簡單說一下ip原理,以下均為假設 例如www.sohu.com 對應的ip位址為 12.24.10.45 首先將ip轉換為二進位制 0000 1000 0001 1000 0000 1010 0010 1101 然後轉換為十六進製制 0b.18.0a...

C 將單個char轉換為string

參考 const char c a 1.使用 string 的建構函式 string s 1 c 2.宣告string 後將char push back string s1 s1.push back c 3.使用stringstream stringstream ss ss c string str...