今天遇到乙個面試測試題,如下
請寫一段**,可以將輸入為」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...