簡體   English   中英

命令行參數修改-C編程

[英]Command-line argument modification - C programming

int main(int argc, char** argc) {

.....


if(argc != 6 && int argc[1] <30 && int argc[2] <30) {
    }
}

大家好,我正在嘗試限制主函數的命令行參數的字符。 這樣會將輸入的第二個和第三個參數的長度限制在30個整數以下。 我收到的錯誤是“錯誤:下標值既不是數組也不是指針”。 在C中,這是我如何訪問每個arg,argc0,argc [1](第二個爭論)等的索引值。任何澄清都將是一件好事! 謝謝。

更改
if(argc != 6 && int argc[1] <30 && int argc[2] <30)

if(argc != 6 && strlen (argv[1]) <30 && strlen (argv[2]) <30)

char * argv []與參數有關。

嘗試這個:

int main(int argc, char** argv)
{
    //...
    if(argc != 6 && strlen(argv[1]) < 30 && strlen(argv[2]) < 30)
    {
        //do stuff
    }
}

首先,您有兩個名為argc的參數,這是不對的,但是我認為那只是一個錯字。

其次, argv是指向字符串的指針(其本身是指向char的指針)。 這意味着您不能在沒有其他函數調用或強制轉換的情況下將其值與整數進行比較。 在這種情況下,我假設您的意思是您想將argumetns的長度限制為30個字符。

如果不想根據參數的長度來限制參數,而是根據其值來限制參數,則需要使用函數調用來獲取字符串中的值。

例如,如果要基於參數的數值來限制參數,則將strlen替換為atoi但要注意,如果用戶輸入非數字輸入,則會得到奇怪的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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