Probleme en C

Fermé
Rem's Messages postés 64 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 8 mai 2007 - 17 oct. 2003 à 19:35
Rem's Messages postés 64 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 8 mai 2007 - 17 oct. 2003 à 20:58
Bonjour, je programme en C depuis peu de temps, et je bute actuellement sur un petit probleme...

Je souhaiterais utiliser un parametre d'un programme dans une fonction mais le compilateur me dit que que "argv", n'est pas déclaré et que c'est la premiere utilisation dans la fonction. Comment faut-il que je declare argv dans la fonction?

Un deuxième probleme est que j'utilise aussi les sockets pour mon programme et ça coince aussi au niveau des fonctions..
if((h=gethostbyname(var))==NULL)
Le compilateur me met qu'il ya comparaison entre un integer et un pointer, sachant que h est un int déclaré dans ma fonction, et que var est un parametre (char) de la fonction que j'utilise.

Si vous pouviez m'aider déjà pour ces erreur, ça me permettrait de comprendre pas mal de choses dans l'utilisation des fonctions. J'ai regardé des tutos mais c'est dans des cas tres generaux, donc j'ai pas pu faire le rapprochement.

Merci d'avance :)

4 réponses

Ah du C tient donc ça m'interesse ;-) . Jette ton code on verra bien ce qu'on pourra arranger.
0
Bon apres lecture je propose:

int main(int argc, char *argv[])
{
...
}

Où argv est un tableau de pointeur et le 1er élément est argv[0] qui est normalement le nom de l'application. Le 1er paramètre sera donc argv[1].

/application -parametre1 -parametre2

argv[0] = "application"
argv[1] = "-parametre1"
argv[2] = "-parametre2"

En ce qui concerne "if((h=gethostbyname(var))==NULL)" je suppose que getmachin retourne un pointeur donc obligatoirement h doit etre un pointeur et si tu veux affecter un entier, la valeur pointée par h est *h. Donc tu doit faire un truc du genre:

int *h; // pointeur sur un entier signé
int val; // la valeur à affecter
h = &val; // le pointeur contient l'adresse de la variable h
*h = 5; // ici j'affecte val par h

Tout est OK?
0
Oops la bourde, je corrige:

h = &val; // le pointeur h contient l'adresse de la variable VAL
0
Rem's Messages postés 64 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 8 mai 2007 27
17 oct. 2003 à 20:58
Merci beaucoup pour ta réponse rapide, le probleme semble être réglé et il me reste plus qu'à tester pour voir si ça marche :)
L'erreur venait du fait que je ne prenais pas en compte le bon type de variable pour ma fonction. Au debut ma fonction ressemblait à: void test( char var){....., alors que pour bien aller il fallait que ce soit void test(char var[16]) etant donné que c'est une ip qui passe dans les parametre...

Dans tous les cas, encore merci pour ton aide, a+
0