2017-09-06 8 views
-3

私が表現してデバッグアサーションエラーを取得:!!nptrの= NULLデバッグアサーションがエラーnptrのを失敗した= NULL

私のコード:

#include <iostream> 

using namespace std; 

void main(int argc, char* argv[]) 
{ 
    cout << "Hello Number " << atoi(argv[1]) << endl; 
} 

誰かが私はこの問題を解決する助けてくださいことができますか?

+0

'argv'を使う前に、argv [1]がNULL –

+1

と等しいかどうか確認してください。あなたは' argc'をチェックする必要があります。 – NathanOliver

+1

私はあなたがプログラムに議論を渡すのを忘れたと思う。 – molbdnilo

答えて

1

ほとんどの場合、コマンドにrunme 7のようにパラメータを渡していない可能性があります。

文字列はNULLである必要があります。そのため、アサーションが発生している理由を説明します。あなたがそれらを使用しようとする前に、パラメータの正しい数を持つ

チェック:

#include <iostream> 
#include <cstdlib> 

using namespace std; 

int main(int argc, char* argv[]) { 
    if (argc != 2) { 
     cerr << "Usage: runme <integer argument>" << endl; 
     return 1; 
    } 
    cout << "Hello Number " << atoi(argv[1]) << endl; 
} 
0

こんにちはは次のようにプログラムを変更しました。 argv []にアクセスする前に、argcをチェックする必要があります。そうしないと、SIGSEGVエラーが発生します。

#include <iostream> 
#include <stdlib.h> 
using namespace std; 

int main(int argc, char* argv[]) 
{ 
    int i = 1; 
    while(argc > 1) 
    { 
     cout << "Hello Number " << atoi(argv[i]) << endl; 
     --argc; 
     ++i; 
    } 
    return 0; 
} 

ご意見をお寄せください。 !!

関連する問題