void main(int argc, char* argv[]) {
char* hostname = (char*)malloc(sizeof(char)*1024);
hostname = getClientHostName("122.205.26.34");
printf("%s\n", hostname);
free(hostname);
}
char* getClientHostName(char* client_ip) {
char hostnames[5][2];
hostnames[0][0] = "122.205.26.34";
hostnames[0][1] = "aaaaa";
hostnames[1][0] = "120.205.36.30";
hostnames[1][1] = "bbbbb";
hostnames[2][0] = "120.205.16.36";
hostnames[2][1] = "ccccc";
hostnames[3][0] = "149.205.36.46";
hostnames[3][1] = "dddddd";
hostnames[4][0] = "169.205.36.33";
hostnames[4][1] = "eeeeee";
for(int i = 0; i<5; i++) {
if(!strcmp(hostnames[i][0], client_ip))
return (char*)hostnames[i][1];
}
return NULL;
}
我不知道是否會有實現的東西,我想實現一個更好的辦法。代碼是不言自明的。有什麼方法可以預先定義主機名的大小,使用一些通用大小的IP地址來避免seg故障?有沒有更好的方法,我不必硬編碼的大小?
你的代碼不應該乾淨地編譯。使用[gcc](http://gcc.gnu.org/)用'gcc -Wall -Wextra -g'編譯它 –