Это сработало для меня:
struct sockaddr_in sa;
int len=20;
char buffer[len];
inet_ntop(AF_INET, &(sa.sin_addr), buffer, len);
printf("address:%s\n",buffer);
AF_INET используется для обозначения того, что sin_addr указывает на сетевой адрес IPv4. Полученная строка копируется в буферную переменную. Вы должны указать количество байтов, доступных в буфере, в последнем аргументе inet_ntop ().