Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将ARP绑定从文件中获取到数组中_C_Arp - Fatal编程技术网

C 如何将ARP绑定从文件中获取到数组中

C 如何将ARP绑定从文件中获取到数组中,c,arp,C,Arp,我正在尝试将Linux中的ARP表放到一个数组中,并在下面发布代码。我总是在变量ip和mac中获取地址,但是当分配给数组时,它只显示一些疯狂的数字。我做错什么了吗?(我不太擅长编程) struct ARP\u条目 { char-IPaddr; char MACaddr; 字符状态; int timec; }; 静态结构ARP_条目ARP_表[ARP_表级别]; void getARP() { int i=0; 常量字符文件名[]=“/proc/net/arp”; 字符ip[16],mac[18]

我正在尝试将Linux中的ARP表放到一个数组中,并在下面发布代码。我总是在变量ip和mac中获取地址,但是当分配给数组时,它只显示一些疯狂的数字。我做错什么了吗?(我不太擅长编程)

struct ARP\u条目
{
char-IPaddr;
char MACaddr;
字符状态;
int timec;
};
静态结构ARP_条目ARP_表[ARP_表级别];
void getARP()
{
int i=0;
常量字符文件名[]=“/proc/net/arp”;
字符ip[16],mac[18],输出[128];
FILE*FILE=fopen(文件名,“r”);
如果(文件)
{
字符行[BUFSIZ];
fgets(行、行大小、文件);
while(fgets(行、行大小、文件))
{
字符a、b、c、d;
如果(sscanf(行,“%s%s%s%s%s%s”、&ip、&a、&b、&mac、&c和&d)<10)
{
如果(ARP_表等级>i)
{
ARP_表[i].IPaddr=ip;
ARP_表[i].MACaddr=mac;
ARP_表[i]。ARPstatus=状态_CON;
i++;
}
}
}
}
其他的
{
perror(文件名);
}

您需要修复结构并将
char
变量放入
char
数组:

struct ARP_entry 
{
  char IPaddr[16];
  char MACaddr[18];
  char ARPstatus;
  int timec;
};
然后,您需要对数据进行适当的复制,以便能够保留它们:

if ( ARP_table_vel > i)
    {
      snprintf(ARP_table[i].IPaddr, 16, "%s", ip);
      snprintf(ARP_table[i].MACaddr, 18, "%s", mac);
      ARP_table[i].ARPstatus = STATUS_CON;
      i++;
    }

最后,ARP表有一个标题,因此您需要放弃第一行。

ARP\U table\U vel变量是什么?如何获得ARP表中的行数以确定ARP\U表的大小?
if ( ARP_table_vel > i)
    {
      snprintf(ARP_table[i].IPaddr, 16, "%s", ip);
      snprintf(ARP_table[i].MACaddr, 18, "%s", mac);
      ARP_table[i].ARPstatus = STATUS_CON;
      i++;
    }