有个指针做函数参数的问题
问题如下:
这样调用并不能使d作为一个指针在Main函数中用(即调用后d没东西),我有点搞不清楚该怎么写,才让d在main中调用select_device函数后,d中保留在函数中使用的地址,即pcap_if_t * d;保持不动,不改,就改改形参的使用和调用的方法。大家帮帮我吧!
#include "stdafx.h"
#include "pcap.h"
int select_device(pcap_if_t *d);
int open_device(pcap_t *device,pcap_if_t *d);
char errbuf[PCAP_ERRBUF_SIZE];
int _tmain()//int argc, _TCHAR* argv[])
{
pcap_if_t * d; //打开适配器时使用
pcap_t * recv; //接收时使用
pcap_t * send1 ,* send2; //发送时使用,设置两个发送网卡
int i;
//char errbuf[PCAP_ERRBUF_SIZE];
printf("\nOPEN DEVICE FOR CAPTURING.");
if(select_device(d)!=0) //这样调用会提示d未被初始化。
return -1;
。。。
return 0;
}
int select_device(pcap_if_t *d)
{
pcap_if_t *alldevs;
char errbuf[PCAP_ERRBUF_SIZE];
int i=0,inum=0;
/* 获取本机设备列表 */
if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)==-1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}
/* 显示本机设备 */
for(d=alldevs;d!=NULL;d=d->next)
printf("%d. %s, %s\n",++i,d->name,d->description?d->description:"(No Description Available.)");
if(i==0)
{
printf("No Interface found! Please Check your installation!\n");
return -1;
}
/* 设备选择 */
printf("Please select the adapter you want to use (1-%d):",i);
scanf_s("%d%*c",&inum);
if(inum<1 || inum>i)
{
printf("\nWrong selection! Please check your Selection!");
return -1;
}
else
{
/* 跳至选择的适配器 */
for(d=alldevs,i=1;i<inum;d=d->next,i++);
}
return 0;
}