11 réponses
carkiasis
Messages postés
67
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
26 avril 2007
28
7 févr. 2006 à 20:21
7 févr. 2006 à 20:21
Le probleme peut se trouver dans les parametres de cette fonction, normalement elle doit etre definie comme ceci :
gethostname(char *name, size_t namelen);
L'erreur se trouve (peut etre...)au niveau des types des variables que tu passes en parametres.
Sachant qu'un char [n] (comme tu as fait) et char*, ce n'est pas exactement la meme chose. C'est peut etre ca le probleme.
gethostname(char *name, size_t namelen);
L'erreur se trouve (peut etre...)au niveau des types des variables que tu passes en parametres.
Sachant qu'un char [n] (comme tu as fait) et char*, ce n'est pas exactement la meme chose. C'est peut etre ca le probleme.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
7 févr. 2006 à 20:25
7 févr. 2006 à 20:25
Je viens de tester sur un fedora 4 avec gcc 4.0.0 et pas des problèmes.
Merci pour vos réponses !
Carkiasis > merci, j'ai essayé de bidouiller un peu, mais bon pignoufe comme je suis j'arrive bien évidemment a rien.
Mes expérimentations en sont là :
Ca compile, mais quand j'exécute y se passe rien :)
lami20j > hé hé, c'est bon signe que ça marche sous fedora, mais je suis sous win :(
Merci
Carkiasis > merci, j'ai essayé de bidouiller un peu, mais bon pignoufe comme je suis j'arrive bien évidemment a rien.
Mes expérimentations en sont là :
#include <stdio.h> #include <unistd.h> int main() { char *name; int gethostname(char *name, size_t namelen); printf("Ma machine s'appelle %s\n",*name); return 0; }
Ca compile, mais quand j'exécute y se passe rien :)
lami20j > hé hé, c'est bon signe que ça marche sous fedora, mais je suis sous win :(
Merci
carkiasis
Messages postés
67
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
26 avril 2007
28
7 févr. 2006 à 20:43
7 févr. 2006 à 20:43
J'ai essayé mais il ne veut pas compiler, bizarre.
je te mets quand meme ce que j'ai essayé :
#include <stdio.h> #include <unistd.h> int main() { char *name; size_t taille; gethostname(name, taille); printf("Ma machine s'appelle %s\n",name); return 0; }
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
9 févr. 2006 à 18:16
9 févr. 2006 à 18:16
bonjour
j'ai bien un code que je compile avec devc++ mais il me faut utiliser winsock2.h pour utiliser gethostname. et puis en plus ca me donne pas le nom de ma machine lol. mais si tu le veux je te le donne.
a +
j'ai bien un code que je compile avec devc++ mais il me faut utiliser winsock2.h pour utiliser gethostname. et puis en plus ca me donne pas le nom de ma machine lol. mais si tu le veux je te le donne.
a +
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
agnesN7
Messages postés
12
Date d'inscription
jeudi 9 février 2006
Statut
Membre
Dernière intervention
2 mai 2006
2
10 févr. 2006 à 09:45
10 févr. 2006 à 09:45
Flo : au sujet du 3e message : quand "il se passe rien", tu as pas une fenêtre dos qui s'affiche fugitivement? Dans ce cas c'est tout à fait compréhensible. Ton code est (il me semble) correct. Seulement tu demandes à ton processeur de t'afficher le nom de ta machine puis de fermer le programme tout de suite, c'est à dire (dans le cas le plus lent) quelques ms après l'affichage. Autant dire que même avec des yeux de lynx, tu auras du mal à voir le résultat! Ce que tu dois faire, c'est lui demander d'attendre une action de ta part avant de fermer la fenêtre. Par exemple, en ajoutant getchar() (je te cite ça "de tête", donc vérifie si ça marche pas) à la fin de ton programme, il attendra que tu appuies sur entrée pour fermer la fenêtre, et tu auras le temps de lire :-)
carkiasis
Messages postés
67
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
26 avril 2007
28
10 févr. 2006 à 13:01
10 févr. 2006 à 13:01
Pour faire une pause simple en C, il faut utiliser l'instruction system("pause");
Il me semble qu'elle est definie dans le header "stdlib.h", à inclure donc.
Il me semble qu'elle est definie dans le header "stdlib.h", à inclure donc.
Merci pour vos réponses :]
tu as pas une fenêtre dos qui s'affiche fugitivement? --> Si si, elle s'affiche et reste ouverte, mais rien n'apparait
J'ai tenté en mettant une pause, mais le résultat est le même, la fenetre s'ouvre, reste a l'écran, mais reste noire :(
Je commence a désespérer !
tu as pas une fenêtre dos qui s'affiche fugitivement? --> Si si, elle s'affiche et reste ouverte, mais rien n'apparait
J'ai tenté en mettant une pause, mais le résultat est le même, la fenetre s'ouvre, reste a l'écran, mais reste noire :(
#include <stdio.h> #include <unistd.h> #include <stdlib.h> int main() { char *name; int gethostname(char *name, size_t namelen); printf("Ma machine s'appelle %s\n",*name); system("pause"); return 0; }
Je commence a désespérer !
désole je n'ai pas bien regardé mon code.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <netdb.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#define TAILLE_NOM 20
int main()
{
int r;
char *name;
if ((name = (char *) malloc(TAILLE_NOM)) == NULL) {
perror("probleme avec le malloc");
exit(1);
}
if ((r = gethostname(name,(size_t) TAILLE_NOM)) == -1) {
perror("probleme avec gethostname");
exit(1);
}
printf("Ma machine s'appelle %s\n", name);
return 0;
}
la g test le code et c bon voi pour les bibliotheque il y en a trop a toi de faire le tri.(j'avai une erreur que etait du a un mauvai usage de la commande gcc et je croye que c'etait les biblio)
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <netdb.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#define TAILLE_NOM 20
int main()
{
int r;
char *name;
if ((name = (char *) malloc(TAILLE_NOM)) == NULL) {
perror("probleme avec le malloc");
exit(1);
}
if ((r = gethostname(name,(size_t) TAILLE_NOM)) == -1) {
perror("probleme avec gethostname");
exit(1);
}
printf("Ma machine s'appelle %s\n", name);
return 0;
}
la g test le code et c bon voi pour les bibliotheque il y en a trop a toi de faire le tri.(j'avai une erreur que etait du a un mauvai usage de la commande gcc et je croye que c'etait les biblio)
carkiasis
Messages postés
67
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
26 avril 2007
28
10 févr. 2006 à 14:15
10 févr. 2006 à 14:15
Pour moi, ces deux lignes ne sont pas correctes
Pour la premiere ligne, ce que tu ecrit c'est une declaration de fonction et non pas l'appel à la fonction en elle meme (dites moi si je me trompe...)
Un truc plus correct serai ce que j'ai mis quelques post avant, meme s'il me mets une erreur de compilation, c'est en tout cas plus proche de la vérité.
Pour la deuxieme c'est
et non pas *name.
J'ai beau avoir pas mal d'experience en C, ce gethostname est bien bizarre... Un pro à la rescousse ??
int gethostname(char *name, size_t namelen); printf("Ma machine s'appelle %s\n",*name);
Pour la premiere ligne, ce que tu ecrit c'est une declaration de fonction et non pas l'appel à la fonction en elle meme (dites moi si je me trompe...)
Un truc plus correct serai ce que j'ai mis quelques post avant, meme s'il me mets une erreur de compilation, c'est en tout cas plus proche de la vérité.
Pour la deuxieme c'est
printf("Ma machine s'appelle %s\n",name);
et non pas *name.
J'ai beau avoir pas mal d'experience en C, ce gethostname est bien bizarre... Un pro à la rescousse ??
agnesN7
Messages postés
12
Date d'inscription
jeudi 9 février 2006
Statut
Membre
Dernière intervention
2 mai 2006
2
10 févr. 2006 à 18:48
10 févr. 2006 à 18:48
int gethostname(char *name, size_t namelen); -> je suis d'accord avec carkiasis
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <netdb.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#define TAILLE_NOM 20
int main()
{
int r;
char *name;
if ((name = (char *) malloc(TAILLE_NOM)) == NULL) {
perror("probleme avec le malloc");
exit(1);
}
if ((r = gethostname(name,(size_t) TAILLE_NOM)) == -1) {
perror("probleme avec gethostname");
exit(1);
}
printf("Ma machine s'appelle %s\n", name);
return 0;
}
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <netdb.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#define TAILLE_NOM 20
int main()
{
int r;
char *name;
if ((name = (char *) malloc(TAILLE_NOM)) == NULL) {
perror("probleme avec le malloc");
exit(1);
}
if ((r = gethostname(name,(size_t) TAILLE_NOM)) == -1) {
perror("probleme avec gethostname");
exit(1);
}
printf("Ma machine s'appelle %s\n", name);
return 0;
}