IP

Fermé
dididu85 - 3 févr. 2011 à 18:40
XDamienX007 Messages postés 3615 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 28 mars 2018 - 3 févr. 2011 à 18:42
Bonjour, je voulais essayer de faire un programme qui calcule l'adresse d'un réseau, d'une machine et de broadcast. J'y arrive en hexadecimal mais en décimal pointé je ne sais pas comment faire. J'ai essayé avec un typedef union mais sa ne marche pas. Voici mon code. Merci de votre aide

#include <stdio.h>
#include <stdlib.h>

typedef union IP
{
struct
{
unsigned char O_4;
unsigned char O_3;
unsigned char O_2;
unsigned char O_1;
} O;
unsigned long addr;
}IP;

void CalculerReseau(IP adresse, IP masque, IP *res, IP *mach, IP *broad);

int main(int argc, char *argv[])
{
union IP adresse ={0}, masque={0}, reseau ={0}, machine ={0}, broadcast ={0};
union IP *res, *mach, *broad;

puts("Saisir votre IP en decimal pointe");
scanf("%d.%d.%d.%d", &adresse.O.O_4, &adresse.O.O_3, &adresse.O.O_2, &adresse.O.O_1);
printf("%d\n", adresse.addr);
puts("Saisir votre masque en decimal pointe");
scanf("%d.%d.%d.%d", &masque.O.O_4, &masque.O.O_3, &masque.O.O_2, &masque.O.O_1);
CalculerReseau(adresse, masque, &reseau, &machine, &broadcast);
printf("Votre adresse reseau est %d.%d.%d.%d\nVotre numero de machine est le %d\nL'adresse de diffusion de ce reseau est %d.%d.%d.%d\n\n", reseau.O.O_1, reseau.O.O_2, reseau.O.O_3, reseau.O.O_4, machine.O.O_4, broadcast.O.O_1, broadcast.O.O_2, broadcast.O.O_3, broadcast.O.O_4);

system("PAUSE");
return 0;
}

void CalculerReseau(IP adresse, IP masque, IP *res, IP *mach, IP *broad)
{
printf("%d\n%d", adresse.addr, masque.addr);
(*res).addr = adresse.addr & masque.addr;
(*mach).addr = adresse.addr & ~masque.addr;
(*broad).addr = adresse.addr | ~(masque.addr);
}




1 réponse

XDamienX007 Messages postés 3615 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 28 mars 2018 420
3 févr. 2011 à 18:42
HS: On dirait le code pawno :D
0