matafan | h_addr_list est un tableau d'adresses. Chaque adresse est un tableau de h_length char. En IPv4 une adresse fait 32 octets, soit 4 char sur ton archi. D'où h_length = 4. Le truc pour l'affichage c'est qu'il ne faut pas afficher les char en tant que char (%c), mais plutôt en tant que %hhu. Tu peux faire (c'est sale, c'est pour l'exemple) :
Code :
- #include <stdio.h>
- #include <netdb.h>
- int
- main(int argc, char *argv[], char *envp)
- {
- struct hostent *h;
- h = gethostbyname("www.google.com" );
- printf("name = %s\n"
- "type = 0x%x\n"
- "length = %d\n"
- "addr = %hhu.%hhu.%hhu.%hhu\n",
- h->h_name,
- h->h_addrtype,
- h->h_length,
- h->h_addr_list[0][0],
- h->h_addr_list[0][1],
- h->h_addr_list[0][2],
- h->h_addr_list[0][3]);
- }
|
Sinon, t'ai-je déja suggéré d'utiliser un debugger ? Et d'apprendre ce qu'est un pointeur aussi, parce que le coup du « . » et du « -> » c'est quand même la base. |