【发布时间】:2017-10-07 08:24:13
【问题描述】:
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;
}
C 初学者。
我不确定是否有更好的方法来实现我正在尝试实现的内容。代码是不言自明的。有什么方法可以预定义主机名的大小,使用一些一般大小的 IP 地址,以避免段错误?有没有更好的方法让我不必对大小进行硬编码?
【问题讨论】:
-
你的代码不应该编译干净。用
gcc -Wall -Wextra -g和GCC编译它
标签: c