4

I've got a quick question; I have an IPv4 in a C string (say "192.168.0.1") and I want to convert it to an uint32_t. I'm sure there should be some function for that but I havn't found it. Any ideas?

KaiserJohaan
  • 9,028
  • 20
  • 112
  • 199
  • `uint32_t` is not an appropriate type for addresses. This is 2011 and modern software **must** support IPv6. Store addresses as strings for any data interchange, and in the `struct addrinfo *` returned by `getaddrinfo` for internal user. – R.. GitHub STOP HELPING ICE Sep 16 '11 at 13:13

1 Answers1

10

The function is called inet_aton.

int inet_aton(const char *cp, struct in_addr *inp);

The structure in_addr is defined in <netinet/in.h> as:

typedef uint32_t in_addr_t;

struct in_addr {
    in_addr_t s_addr;
};

Of course you can also use the newer function inet_pton.

cnicutar
  • 178,505
  • 25
  • 365
  • 392