No.4ベストアンサー
- 回答日時:
> ↑間違ってますか?
間違っています。
argv[n]がNULLになるのは、argv[argc]だけです。
5個のパラメータが正しく入力されたかどうかを知るのであれば、
if (argc == (5 + 1))
とします。
argv[0]にはプログラム名が格納されます。また、環境によってはargcが0になることもありますので、その場合はargv[0]がNULLになります。
argv[argc + 1]以降は配列の外になりますので、その内容を参照することはできません。
No.3
- 回答日時:
> if (argv[1] == NULL)
> if (argv[2] == NULL)
> if (argv[3] == NULL)
> if (argv[4] == NULL)
> if (argv[5] == NULL)
> とやれば、それぞれNULLかどうかのチェックできると
> いう事ですね!
一応はそうですが、たぶん何か誤解があると思います。
具体的に何をしたいのか補足してください。
この回答への補足
やりたい事は、シェルから渡されてくる5個の
パラメタを使って、Cモジュールで処理を行うのですが
変数に格納する前に、パラメタチェックを行ってから
(シェル側でもチェックしてる)宣言した変数にコピーして使いたいのです。
if (argv[1] == NULL){ /* パラメタのNULLチェック */
strcpy(atr1, argv[1]); /* 変数にコピーする */
}
↑間違ってますか?
No.2
- 回答日時:
argv はプログラム名を含めたコマンドライン引数の配列へのポインタを保持しているので、NULL にはなりません。
argv[1] は(もしあれば)コマンドライン引数の文字列の先頭を指しているので、'\0' にはなりません。
argv[1] が NULL ということはプログラムが、引数なしで実行されたということです。
strcmp(argv[1] == NULL) は明らかに不正な呼び出しです。strcmp の関数宣言を確認して下さい。
No.1
- 回答日時:
> 記述は以下で合っていますでしょうか?
間違っています。
argvの値がNULLかどうかをチェックするのであれば、
if (argv == NULL)
です。ただし、argvがNULLになるのは、(再帰呼出しを行うなど)自分でmainを呼び出した場合のみです。
argv[1]がNULLかどうかをチェックするのであれば、
if (argv[1] == NULL)
です。
この回答への補足
パラメタの数が5コあって、それぞれの値がNULLか
どうかチェックするのであれば、jactaさんが
教えてくれたように
if (argv[1] == NULL)
if (argv[2] == NULL)
if (argv[3] == NULL)
if (argv[4] == NULL)
if (argv[5] == NULL)
とやれば、それぞれNULLかどうかのチェックできると
いう事ですね!
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
intとlongは同じ?
-
OpenCVによる4値化について
-
C言語で%を使わない余りの出し方
-
2の補数を計算するプログラム
-
whileとifを使い偶数を出すには
-
ModifyWorldTransformの引数XFO...
-
強連結判定を行うプログラムに...
-
3のつく数と3の倍数を表示 C言語
-
画像の拡大・縮小
-
C言語で簡単なパックマンゲーム...
-
再起呼び出しの回数をカウント...
-
opencvとmbedのシリアル通信で...
-
nCrの計算
-
main関数について
-
クリックされた地点が2点の線分...
-
C言語 5) 正の整数 n を入力(...
-
四則演算プログラム
-
C++ Debug Errorについて教えて
-
乱数で交互に偶数、奇数が、、、。
-
C++で表を作成したいのです ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
C言語で%を使わない余りの出し方
-
迷路を脱出する経路探索プログ...
-
画像の拡大・縮小
-
分数の足し算をさせるプログラ...
-
C言語で簡単なパックマンゲーム...
-
C++で表を作成したいのです ...
-
条件が多い場合
-
複数の共有メモリの作成
-
ヒストグラム均等化処理プログラム
-
3のつく数と3の倍数を表示 C言語
-
argvのNULLチェック
-
乱数で交互に偶数、奇数が、、、。
-
プログラミングに関して
-
OpenCVによる4値化について
-
whileとifを使い偶数を出すには
-
16bitで乱数を生成する方法
-
再帰処理をループ処理に変換
おすすめ情報