Je pense que ce code et cette erreur s'expliquent d'eux-mêmes, mais je ne sais pas pourquoi?
Environnement:
OS: Mac OS X 10.6.1
compilateur: i686-apple-darwin10-gcc-4.2.1
Code:avertissement: le format '% s' attend le type 'char *', mais l'argument 2 a le type 'int'
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <netdb.h>
4 #include <sys/socket.h>
5
6 int
7 main(int argc, char **argv)
8 {
9 char *ptr, **pptr;
10 struct hostent *hptr;
11 char str[32];
12
13 //ptr = argv[1];
14 ptr = "www.google.com";
15
16 if ((hptr = gethostbyname(ptr)) == NULL) {
17 printf("gethostbyname error for host:%s\n", ptr);
18
19 }
20 printf("official hostname:%s\n", hptr->h_name);
21
22 for (pptr = hptr->h_aliases; *pptr != NULL; pptr++)
23 printf(" alias:%s\n", *pptr);
24
25 switch (hptr->h_addrtype) {
26 case AF_INET:
27 case AF_INET6:
28 pptr = hptr->h_addr_list;
29
30 for (; *pptr != NULL; pptr++)
31 printf(" address:%s\n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
32 break;
33 default:
34 printf("unknown address type\n");
35 break;
36 }
37 return 0;
38 }
compilateur et sortie exécutée ci-dessous: Pourquoi est-ce que j'obtiens l'avertissement de format et est-ce que ceci pourrait être la cause de l'erreur de segmentation?
+ 1 réponse très rapide. – Jack
Cela fonctionne. Merci beaucoup. – ufengzh