【发布时间】:2023-04-04 17:07:01
【问题描述】:
当我尝试使用参数运行我的程序时出现分段错误错误。现在我通过 GDB 运行它并找到有问题的行,它看起来像这样:
*dstip = (*optarg);
原型是:
char *dstip;
最后它在这一行被调用:
char *filter = ("ip dest host %s", dstip);
现在回头看,我并不惊讶它不起作用,因为它看起来......坦率地说是错误的,并且通过完全删除这些行(并更改过滤器文本)解决了问题。但是,我需要输入的 IPv4 地址显示在将使用的错误消息过滤器中,并且对指针毫无用处并且来回尝试了不同的东西,我无法做到正确。也就是我只得到warning initialization makes pointer from integer之类的……怎么办?
【问题讨论】:
-
@Scooter:
optarg是与getopt()一起使用的全局变量之一。 -
如果您想记录
getopt()找到的参数,通常只需编写:dstip = optarg;将存储在变量optarg中的指针分配给指针变量@ 987654331@.
标签: c pointers segmentation-fault ip-address