當我嘗試運行含有參數的程序時,出現分段錯誤錯誤。現在,我已經通過GDB運行它,並發現有問題的行,它看起來像這樣:c - 分段錯誤(核心轉儲)指針問題
*dstip = (*optarg);
的原型爲:
char *dstip;
,最後它被稱爲該行:
char *filter = ("ip dest host %s", dstip);
現在回頭看看它,我並不感到驚訝它不工作,因爲它看起來......坦率地說錯了,並通過完全刪除這些行(並更改過濾器文本)來解決問題。但是,我需要輸入的IPv4地址顯示在錯誤消息過濾器中,並且用於指針,並且嘗試了不同的事情來回傳遞,我無法做到。也就是說,我只得到warning initialization makes pointer from integer
之類的......做什麼?
什麼是optarg? – Scooter 2012-08-19 16:57:55
@Scooter:'optarg'是與['getopt()']一起使用的全局變量之一(http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html)。 – 2012-08-19 16:59:36
如果你想保留'getopt()'發現的參數記錄,通常只需要寫下:'dstip = optarg;'將存儲在變量'optarg'中的指針賦給指針變量'dstip' 。 – 2012-08-19 17:01:00