簡體   English   中英

argv的分段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM