int main(int argc, char *argv[])
{
char *str = myFunction();
printf("%s\n", str);
return 0;
}
char * myFunction () {
char *sub_str = malloc(1100 * sizeof(char));
//char* sub_str = new char[100];
char *split = ":";
char *end = ";";
struct ifaddrs *ifaddr, *ifa;
int family, s;
int x=0;
char host[NI_MAXHOST];
if (getifaddrs(&ifaddr) == -1)
{
perror("getifaddrs");
exit(EXIT_FAILURE);
}
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next)
{
if (ifa->ifa_addr == NULL)
continue;
s=getnameinfo(ifa->ifa_addr,sizeof(struct sockaddr_in),host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
if(ifa->ifa_addr->sa_family==AF_INET)
{
if (s != 0)
{
printf("getnameinfo() failed: %s\n", gai_strerror(s));
exit(EXIT_FAILURE);
}
if(x==0){
strcpy(sub_str, ifa->ifa_name);
strcat(sub_str, split);
strcat(sub_str, host);
strcat(sub_str, end);
}else{
strcat(sub_str, ifa->ifa_name);
strcat(sub_str, split);
strcat(sub_str, host);
strcat(sub_str, end);
}
x++;
}
}
int len = strlen(sub_str);
sub_str[len - 1] = '\0';
freeifaddrs(ifaddr);
return sub_str;
}
---------------------------------------------------
and the command-line flags is gcc -o getip getip.c