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 : Sélectionner tout - Visualiser dans une fenêtre à part
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