Bonjour (ou bonsoir selon l'heure de lecture)
Tout d'abord étant un peu perdu (je suis nouveau sur ce forum) si j'ai posté au mauvais endroit veuillez m'en excuser ,ceci n'est pas volontaire.
Je précise avant que je suis débutant, donc il se peut que je fasse des erreurs "bêtes".
Nous avons commencer en cours un TP ou nous devons convertir une adresse IP et un masque (qui aura été demander a l'utilisateur précédemment) en entier de 32 bits.
L'adresse IP donné doit être sur une chaine de caractères.
Le problème est que nous devons utiliser la fonction inet_pton() et inet_ntop().
Je n'ai aucun cours ou explication des profs concernant ces 2 fonctions ,il nous ont demandé d'aller nous renseigner sur le web, ce que j'ai fait ,mais sur le net je suis abreuvé de multiple explication plus ou moins incompréhensible , je suis totalement "paumé".
De ce que j'ai compris, par exemple la fonction inet_pton s'écris
" int inet_pton(int af, const char *src, void *dst);"
-af doit s'écrire AF_INET car nous utilisons un adresse ipv4
-la constante char représente l'adresse ip qui a été communiqué par l'utilisateur
-le void *dst représente la variable entier auquel on veut afficher
- Cette variable est "pré-crée" (donc pas besoin de la faire) .
Et c'est la que cela se corse ,c'est la première fois que je rencontre des variables pré-crée (si vous pouvez m'en dire plus cela serait vraiment cool) ,je ne comprends pas vraiment mes erreurs (si j'ai pris les bonnes librairie par exemple) .
Je ne souhaite pas que vous me fassiez le programme a ma place ,je souhaite que vous m'expliquez ce qui ne va pas.
Pour information ,nous utilisons le langage c ,a l'école nous utilisons Code::Block Version 10.05 sur des machine avec fédora.
Et quand je souhaite refaire les programme chez moi sachez que j'utilise une machine Windows 7 avec la même version de code block.
Donc voici mon code
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <string.h>
//#include <w2tcpip.h>
//#include <arpa\inet.h>
//• demande à l'utilisateur d'entrer une adresse IP sous la forme décimale pointée
//• demande à l'utilisateur d'entrer un masque sous la forme décimale pointée
//• convertit l'adresse IP précédente en un entier sur 32 bits
//• convertit le masque précédent en un entier sur 32 bits
//inet_pton(AF_INET,char adresseIPChaine[], void adresseIPentier);
int main()
{
char adresseIPChaine[16];
long adresseIPentier;
printf("entrez une adresse ip en décimale pointé \n");
scanf("%s",adresseIPChaine);
//inet_pton(AF_INET, &adresseIPChaine, adresseIPentier);
inet_pton( AF_INET, &adresseIPentier, &adresseIPentier);
// adresse=adresseIPChaine&adresseIPentier;
printf("%h",adresseIPentier);
return 0;
}
Je vous remercie d'avance pour votre aide.
Message édité le 06 janvier 2015 à 20:28:06 par salaliche