Bonjour,
J'essaie de passer des paramètres à mes fonctions par référence, donc en utilisant des pointeurs ..... sauf que ca ne fonctionne pas comme je le souhaiterait !
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 void resolv(char *hote) { struct hostent * hostent = NULL; struct in_addr adresse_ip; if (hote != NULL) { if ((hostent = gethostbyname (hote)) == NULL) { if (!inet_aton(hote,&adresse_ip)) {usage(); } } else { hote = inet_ntoa(*(struct in_addr*) hostent->h_addr); } } } void create_conninfo(char *conninfo, char *dbname, char *user, char *password, char *hostaddr) { strcat(conninfo,"dbname = "); strcat(conninfo,dbname); strcat(conninfo," user = "); strcat(conninfo,user); ...... } main(int argc, char **argv) { char *conninfo, *hote, *user; resolv(hote); if ((conninfo = (char *) malloc (strlen(dbname) + strlen(user) + strlen(password) + strlen(hote) + 256)) != NULL ) create_conninfo(conninfo, dbname, user, password, hote); }
Visiblement, create_conninfo modifie bien la chaine pointée par conninfo, par contre, resolv ne modifie pas la valeur de hote .... ?
J'ai vraiment du mal avec les pointeurs, si vous pouviez m'aider a comprendre ce qui ne va pas dans ce cas là ?
Merci !
Jeremy