inet_aton()
两次技术面试都被让c语言实现inet_aton()函数
看来这个函数真的很重要。
我先贴上我自己的实现代码
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> int my_inet_aton(const char *input) { char *add_block[4]; int length = strlen(input); int flag = 0; int count[4]; unsigned int result = 0; for(int i=0;i<4;i++) { add_block[i] = (char*)malloc(sizeof(char)*4); } memset(count,0,sizeof(int)*4); for(int i=0;i<length;i++) { if(input[i]!='.') { add_block[flag][count[flag]++] = input[i]; } else { add_block[flag][count[flag]++]='\0'; flag++; } } add_block[flag][count[flag]++] = '\0'; int multi[4] = {256*256*256,256*256,256,1}; for(int i=0;i<4;i++) { result += atoi(add_block[i])*multi[i]; } printf("%u\n",result); return 0; } int main() { char *a = "192.168.1.1"; my_inet_aton(a); return 0; }