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は同じ?
-
2の補数を計算するプログラム
-
分数の足し算をさせるプログラ...
-
C言語で%を使わない余りの出し方
-
再起呼び出しの回数をカウント...
-
C言語のプログラムについて(...
-
argvのNULLチェック
-
複数の共有メモリの作成
-
コマンドプロンプトのウィンド...
-
直線補間について
-
異なるn個の整数からr個の整数...
-
条件が多い場合
-
DXライブラリによるパズルゲー...
-
3のつく数と3の倍数を表示 C言語
-
迷路を脱出する経路探索プログ...
-
C#で疑似カラー
-
円周にアンチエイリアスをかける
-
乱数生成について
-
C++ Debug Errorについて教えて
-
returnの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報