Bonjour tout le monde, j'ai comme projet de créer un programme permettant d'indiquer l'adressage d'une adresse IP entrée par l'utilisateur.
Pour le fonctionnement de mon programme, voici comment il se déroule :
--> l'utilisateur rentre une adresse IP ainsi que le masque : X.X.X.X /masque
--> l'adresse est convertie en binaire
--> le masque est converti en binaire
--> on effectue les calculs
--> on affiche les résultats
Le problème, c'est qu'une fois que l'adresse est convertie en binaire, j'aimerais la retourner mais je n'y arrive pas. Je n'ai pu effectuer qu'une procédure et non une fonction.
Voici le début de mon programme, merci d'avance !
main.c
#include <stdio.h>
#include "conversionB10-B2.h"
int main(int argc, const char * argv[]) {
int p1[3] = {0}, p2[3] = {0}, p3[3] = {0}, p4[3] = {0}, CIDR = 0;
printf("Programme permettant de calculer l'adressage IPV4 d'une adresse entrée. \n");
printf("Entrez votre adresse IPV4 ainsi que CIDR au format X.X.X.X /CIDR : \n");
scanf("%d.%d.%d.%d /%d", p1, p2, p3, p4, &CIDR);
printf("Test affichage ---- \n");
printf("%d %d %d %d \n", *p1, *p2, *p3, *p4);
conversionB10B2(p1);
conversionB10B2(p2);
conversionB10B2(p3);
conversionB10B2(p4);
printf("\n");
}
conversionB10-B2.c
#include "conversionB10-B2.h"
#include <string.h>
void conversionB10B2(int *nombre)
{
int i = 0, répétition = 0, Nombre = 0, tableau[100];
Nombre = *nombre; // Nombre prend la valeur du nombre entré
while(*nombre != 0)
{
tableau[répétition] = *nombre%2; // On incrémente le tableau en prenant le restant de la division par 2
*nombre = *nombre/2;
répétition++;
}
if(répétition != 8)
{
while(répétition != 8)
{
tableau[répétition] = 0;
répétition++;
}
}
printf("%d en Base 2 = ", Nombre);
for(i = répétition-1; i >= 0; i--)
{
tableau[i] = tableau[i];
printf("%d",tableau[i]);
}
printf("\n");
}
Pour la variable nommée Nombre cette dernière prend en valeur le nombre entré en décimale et me permet donc d'afficher à la fin du programme la ligne :
printf("%d en Base 2 = ", Nombre);
Pour après afficher le nombre en binaire.
Après pour mon tableau, je n'arrive pas à le renvoyer. Si je fais une fonction et que je renvoie le tableau, dans mon main.c je n'arrive pas à récupérer la valeur en binaire. Merci !
Je ne sais pas si elle sont supportees par ton compilo, mais regarde du cote des fonctions itoa() et atoi().
Comme ca tu recuperes l'adresse en decimal, tu recuperes sa representation binaire dans une string, tu retournes la chaine et tu la repasses en decimal.
Sinon avec ta fonction il te suffit de renvoyer le tableau.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html