[英]Segmentation Fault With argv
我有一個程序,該程序從命令行讀取單個參數並對其執行某些操作。 我正在使用argv和argc。 當我無法將參數傳遞給程序時,它會出現段錯誤。 我試過檢查argc是否不是某個值,然后將其打印出來,但它仍然存在段錯誤。 這是有問題的代碼。 請注意,它在傳遞單個參數時按預期工作。 這是有問題的代碼:
int main(int argc, char *argv[])
{
int numTimes = atoi(argv[1]); //converts content of argv[1] into integer
if(argc != 2)
{
printf("Enter a valid integer.");
}
在嘗試訪問該參數之前,需要檢查argc
。 只需將argc
測試移至調用atoi(argv[1])
之前的某個時間。
在嘗試訪問特定元素之前,只需檢查參數數量即可。 像這樣:
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Enter a valid integer.");
return 0;
}
int numTimes = atoi(argv[1]); // now we're sure to have at least 1 argument passed
// ...
}
您必須先進行檢查, 然后再嘗試訪問參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.