İlk olarak, muhtemelen kullandığınız türü ayarlamak istediğiniz MAC adresini saklamak için Bu durumda unsigned char
'un daha iyi olduğunu düşünüyorum. Ardından, MAC adreslerini yazmak için bir işlev oluşturmanızı öneririm, böylece kodunuzdaki her yerde aynı printf()
ifadesini kopyalayıp yapıştırma ve dizine eklediğiniz diziyi ayarlama. İşte
(ayrıca, bu. Derleyici doğru olduğundan emin olmak için İşlev parametresi karşı kullandığınız türünü kontrol sağlar) inet_ntoa()
benzer evresel olmayan çözüm ve inet_ntoa_r()
benzer bir evresel çözüm hem var :
#include <stdio.h>
unsigned char mac[6] = {0x00, 0x0d, 0x3f, 0xcd, 0x02, 0x5f};
char* MACADDR_toString(unsigned char* addr)
{
static char str[18];
if(addr == NULL) return "";
snprintf(str, sizeof(str), "%02x:%02x:%02x:%02x:%02x:%02x",
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
return str;
}
char* MACADDR_toString_r(unsigned char* addr, char* str, size_t size)
{
if(addr == NULL || str == NULL || size < 18) return NULL;
snprintf(str, size, "%02x:%02x:%02x:%02x:%02x:%02x",
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
return str;
}
int main(int argc, char* argv[])
{
char str[18];
printf("%s\n", MACADDR_toString(mac));
printf("%s\n", MACADDR_toString_r(mac, str, sizeof(str)));
return 0;
}
[(s) (sn) printf()] (http://linux.die.net/man/3/printf) arkadaşın. –
Bir MAC adresinin her baytı için bir 'int'? O.o – mpontillo
Biliyorum, biraz büyük! – user2131316