[C con Clase] Obtener direccion MAC de un dispositivo

Moises Brenes moises.brenes en gmail.com
Lun Abr 2 07:39:38 CEST 2007


Bueno al final estoy haciendo asi, pero es que ya estoy desesperado.

Pero veo algo raro a la hora de leer el fichero :

La ultima linea me la lee 2 veces y no encuentro el problema.

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

int main()
{
char ip_addr[16];
char mac_addr[18];
char arg_ping[64];
char arg_arp[64];
char d_char[6];
char *p_token;
char file_name[16];
char file_stream[128];
char tokens[128];
int flag;
FILE *p_file;

  strcpy(ip_addr,"192.168.1.201");
  strcpy(arg_ping,"ping ");
  strcpy(arg_arp,"arp -a ");

  strcat(arg_ping,ip_addr);
  strcat(arg_ping," -n 1");

  strcat(arg_arp,ip_addr);
  strcat(arg_arp," > ");
  strcat(arg_arp,ip_addr);
  strcat(arg_arp,".txt");

  system(arg_ping);
  system(arg_arp);

  strcpy(d_char," \n\t");
  strcpy(file_name,ip_addr);
  strcat(file_name,".txt");

  p_file = fopen(file_name,"r");

  flag = 0;
  while (!feof(p_file))
  {
    fgets(file_stream,128,p_file);
    strcpy(tokens,file_stream);

    p_token = strtok(tokens,d_char);
    if (p_token != NULL)
    {
      if (strcmp(p_token,ip_addr) == 0)
      {
        flag = 1;
      }
      else
      {
        if (flag == 1)
        {
          printf("MAC Address : %s\n",p_token);
          strcpy(mac_addr,p_token);

          flag = 2;
        }
      }
    }

    while ((p_token = strtok(NULL,d_char)) != NULL)
    {
      if (p_token != NULL)
      {
        if (strcmp(p_token,ip_addr) == 0)
        {
          flag = 1;
        }
        else
        {
          if (flag == 1)
          {
            printf("MAC Address : %s\n",p_token);
            strcpy(mac_addr,p_token);

            flag = 2;
          }
        }
      }
    }
  }

  fclose(p_file);

return 0;
}

PD: Paso el fichero adjunto
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: 192.168.1.201.txt
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070401/7941f229/attachment.txt>


Más información sobre la lista de distribución Cconclase