1

コマンドラインから単一の引数を読み取り、それに対して特定の操作を実行するプログラムがあります。私はargvとargcを使用しています。プログラムに引数を渡すのに失敗すると、segfault が発生します。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.");
}
4

3 に答える 3

7

その引数にアクセスするargc に確認する必要があります。argcを呼び出す前に、テストをいつか前に移動してくださいatoi(argv[1])

于 2012-03-27T18:49:28.087 に答える
5

特定の要素にアクセスする前に、引数の数を確認してください。このようなもの:

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

    // ...
}
于 2012-03-27T18:50:53.620 に答える
2

引数にアクセスするにチェックを行う必要があります。

于 2012-03-27T18:49:45.147 に答える