Ниже приведен код, в котором я хочу отобразить IP-адрес адреса, введенного пользователем, но он дает мне STATUS_ACCESS_VIOLATION, и я не понимаю причину этого.
Отлично компилируется. Вот оно
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
// Link to ws2_32.lib
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
struct protoent *proto=NULL;
int main(int count, char *strings[])
{
int pid;
struct hostent *host;
struct sockaddr_in addr;
if ( count != 3 )
{
printf("usage: %s <addr> < Adressflag = 0 for name and 1 for IP > /n", strings[0] );
exit(0);
}
if ( count == 3 )
{
int flag = atoi(strings[2]);
printf("flag is %d",flag);
if ( flag == 0)
{
pid = getpid();
proto = getprotobyname("ICMP");
host = gethostbyname(strings[1]);
bzero(&addr, sizeof(addr));
addr.sin_family = host->h_addrtype;
addr.sin_port = 0;
addr.sin_addr.s_addr = *(long*)host->h_addr;
//traceroute(&addr);
printf("IP of %s is %s",host->h_name , host-> h_addr);
}
else
{
}
}
return 0;
}
Я запускаю это в Cygwin. Кто-нибудь знает об ошибке и кто-нибудь может сказать, что я делаю неправильно?