我想給幾個參數在命令行中,就像當:分段故障嘗試檢查命令行參數(在C)
./programName -a 103 -p argument1,argument2,argument3
然後,我想用這些參數值創建幾個變量:在標誌-a
後面的數字的一個整數變量,緊接在標誌-p
後面的參數數量的一個整數變量以及具有所有這些參數的一個數組變量。
這將是永遠相同的參數(所以我的代碼無法管理其他形式的輸入):-a(整數)-P(與分割的參數列表)
我的問題是,有分段故障。經過多次嘗試以查看它發生的位置(使用多個printf
),當變量a = 3時(因此在標誌-p處)出現分段錯誤。分割發生在「case'p'」這一行。
我不明白爲什麼這段代碼接受參數「-a」而不是「-p」。而且我認爲沒有錯誤,因爲我的代碼在「case'p'」中,因爲分段錯誤發生在那之後(在「case'p'」一行)。
我希望你能理解我的問題,謝謝你的幫助:)。
編輯:
感謝馬克·威爾金斯和OOGA了他們的答案。分段錯誤確實是由於未初始化的數組中的單個元素造成的。 如果有些人不知道如何有效地初始化字符串數組,檢查該另一個問題,它很好地解釋):
你確定你使用'char * chrp = argv [p + 1];'?因爲沒有p定義... – Doberman
當代碼執行'number_a = strtol(argv [a + 1],NULL,10);',它不知道'argv [a + 1];'不是NULL。也許使用'for(; a <(argc-1);)' – chux
還沒有完成,但你的休息應該超出花括號? – Nikole