Bonjour,

j'aimerais afficher les noms contenus dans h_addr_list (dans une boucle), mais j'obtiens des erreurs d'affichage : certains caractères n'ont pas été bien convertis.
Par exemple, je veux lister les adresses IP et les noms des machines qui se trouvent à l'adresse www.hotmail.com.
J'obtiens ce résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
www.hotmail.com :
	 Nom : @�disp@�.kahuna.glbdns.microsoft.com  // problème d'affichage ?
	 Adresse IP : 64.4.20.186
	 Nom : @�.kahuna.glbdns.microsoft.com // problème d'affichage ?
	 Adresse IP : 64.4.20.174
	Nb d'adresses IP = 2
Voici les sources :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
void afficher_ip(struct hostent *host_entry){
  int i, k;
  for(i=0; host_entry->h_addr_list[i]; i++){
    printf("\t Nom : %s\n", host_entry->h_addr_list[i]);
    printf("\t Adresse IP : %s\n", inet_ntoa(*(IN_ADDR *) host_entry->h_addr_list[i]));
    k = i+1;
  }
  printf("\tNb d'adresses IP = %d\n\n", k);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
void affiche(char *name){
  struct hostent *hostinfo = NULL;
  const char *hostname = name;
  hostinfo = gethostbyname(hostname);
  if (hostinfo == NULL){ /* l'hôte n'existe pas */
    fprintf (stderr, "Unknown host %s.\n", hostname);
    exit(EXIT_FAILURE);
  }
  printf("\n%s :\n", hostname);
  afficher_ip(hostinfo);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
int main(int argc, char *argv){
  affiche("www.hotmail.com");
  return EXIT_SUCCESS;
}
Si vous avez une idée pour que l'affichage soit correct.
Merci.