У меня есть простая функция для получения MAC-адреса на машине linux (при условии, что eth0 существует. Я напишу позже).C Возвращаемая строка Неправильная
Вопрос: Есть ли универсальный интерфейс во всех дистрибутивах Linux? Кроме того?
C Функция:
char* getmac(){
FILE *mf;
mf = fopen("/sys/class/net/eth0/address", "r");
if(!mf) exit(-1);
char *mac;
fgets(mac, 18, mf);
printf("%2\n", mac);
return mac;
}
Теперь это печатает MAC отлично. Однако, когда я возвращаю его, я получаю совершенно другое значение.
char *m;
m = getmac();
printf("%s\n", m);
дает совершенно другую, в основном нечитаемую строку. Первые 2 символа ВСЕГДА верно, то после этого, это нечитаемым ...
Это работает как шарм:
char* getmac(){
FILE *mf;
mf = fopen("/sys/class/net/eth0/address", "r");
if(!mf) exit(-1);
char *mac;
mac = calloc(18, sizeof(char));
if(!mac) exit(-1);
fgets(mac, 18, mf);
printf("%s\n", mac);
return mac;
}
Спасибо за ответы !! Кроме того, бесплатно.
'символ * макинтош;' является неиницализированным. Это ничего не говорит. – wildplasser
Не записывайте «ответ» в заголовок, принимайте соответствующий ответ, и вопрос получает помеченный как ответ, ответчик получает дополнительную информацию, и вопрос исчезает из раздела вопросов без ответа. – datenwolf
Приношу свои извинения. В то время временный порог принятия ответа еще не прошел. Спасибо за совет! – Goodies