2

inet_ntop関数の戻り値(const char *) をに変換するにはどうすればよいstringですか?

コード:

string ip = inet_ntop(b->ifa_addr->sa_family,tempAddrPtr,addressOutputBuffer, sizeof(addressOutputBuffer));

常にセグメンテーション違反が発生します...

struct ifaddrs *a;
void *tempAddrPtr = NULL;
struct ifaddrs *b;
char addressOutputBuffer[INET6_ADDRSTRLEN];
int i=0;
i=getifaddrs(&a);
cout << i;
b=a;
cout << name;
for (b = a; b; b = b->ifa_next) {
        cout << b->ifa_name;

        if(b->ifa_addr->sa_family == AF_INET)
            tempAddrPtr = &((struct sockaddr_in *)b->ifa_addr)->sin_addr;
          else
            tempAddrPtr = &((struct sockaddr_in6 *)b->ifa_addr)->sin6_addr;
        printf(" Internet Address:  %s \n",
                     inet_ntop(b->ifa_addr->sa_family,
                               tempAddrPtr,
                               addressOutputBuffer,
                               sizeof(addressOutputBuffer)));
                     string ip = inet_ntop(b->ifa_addr->sa_family,tempAddrPtr,addressOutputBuffer, sizeof(addressOutputBuffer));

}
freeifaddrs(a);
4

2 に答える 2

0

inet_ntop は char* を返します。inet_ntop が返された場合、string ip オブジェクトは正しく生成されます。急な部分は inet_ntop パラメータ、ポインタ付きパラメータです。

いくつかのデバッグのヒント:

1. check b is null or not
2. tempAddrPtr is valid or not
3. addressOutputBuffer is valid or not
于 2012-11-18T05:31:20.767 に答える