Salut,
voilà, c'est tout simple, je souhaite récupérer une adresse MAC dans un tableau (d'unsigned char évidemment) saisie par l'utilisateur au clavier.
Je n'ai pas trouvé de fonction qui convertissait directement une chaine en notation avec des points style 87.23.CD.43.22.45 vers un tableau d'unsigned char (à la manière de inet pour les adresse IP) donc je me suis dis que j'allais passer par un bon vieux scanf.
Mon code est le suivant:
Où est le problème? Et bien lorsque j'affiche les adresses, les 3 premiers octets de DST_ADDR sont toujours à 0... je n'arrive pas à comprendre pourquoi. Je sais bien que c'est dû au deuxième scanf mais pour moi on affecte les valeurs une fois pour toute avec le scanf, c'est pas un pointeur vers les valeurs de l'entrée standard...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 unsigned char host_mac_addr[ETH_ALEN]; /* source MAC address*/ unsigned char dst_mac_addr[ETH_ALEN]; /* dest MAC address */ int i; printf("DST MAC ADDRESS?\n"); scanf("%2x.%2x.%2x.%2x.%2x.%2x[^\n]",&dst_mac_addr[0],&dst_mac_addr[1],&dst_mac_addr[2],&dst_mac_addr[3],&dst_mac_addr[4],&dst_mac_addr[5]); printf("HOST MAC ADDRESS?\n"); scanf("%2x.%2x.%2x.%2x.%2x.%2x[^\n]",&host_mac_addr[0],&host_mac_addr[1],&host_mac_addr[2],&host_mac_addr[3],&host_mac_addr[4],&host_mac_addr[5]); /* AFFICHAGE */ for(i=0;i<ETH_ALEN;i++) { printf("DST_ADDR[i]: %2x\n",dst_mac_addr[i]); } for(i=0;i<ETH_ALEN;i++) { printf("HOST_ADDR[i]: %2x\n",host_mac_addr[i]); }
Donc si quelqu'un peut m'expliquer mon problème et/ou au passage me donner peut être une solution plus maline pour récupérer une adresse MAC saisie par un utilisateur dans un tableau (d'unsigned char de taille 6). Merci d'avance!
Partager