アプリ版:「スタンプのみでお礼する」機能のリリースについて

梅雨の候・・
さて
最近手が空いたのでC言語を勉強したいます。
 今さらですが
 http://oshiete.goo.ne.jp/qa/8897349.html
 で
if ( argc < 2 ){ ですが
if ( argc < 1) にすると file mei ga na と表示されないのでしょうか?
 試す環境がございませんので、分かりませんが、
 私的には file mei ga na のでしたら argc < 1で
  一つもファイルが存在しないとの意味としてOKみたいですが!
 ご教授のほどをよろしくお願いいたします。

質問者からの補足コメント

  • 皆様ご回答誠にありがとうございました。
    参考書の○ステップC言語入門P227に
     詳しいことはわかりませんが! 
    ヌル文字との関係があるみたいです。
     ・ヌル文字がないとどうなるのか
     ヌル文字がない文字列は、終了位置の指定がないため、どこまでが文字列かわかりません。
    そのため、printfなどで表示させようとしたとき、配列の大きさを超えて、本来の配列の記憶場所
    でない部分まで表示されてしまいます。
     文字列の終わりには必ずヌル文字がを入れることを心がけながらプログラミングを行いましょう。
     以上
    文章でいうならば、何処までかわからないので、文章の終止符.みたいなものかなと^^

      補足日時:2015/06/24 03:28
  • 以上コメントの続きですが
    また同参考書P279
     
      以下!のコマンドライン引数 abc xyz 123~(argcの値は4)
     $ example9 abc xyz 123
     argcには、そのプログラムを実行したときに指定された引数+1が渡されます。example9eを
     実行したときに、example9の後に引く数3つの引数を指定したなら、argcの値は4になります。
      プログラム名も引数の一つと考えので、引数プラス1になります。
     プログラムの実行時に引数を一つも指定しない場合は、argcの値は1となります。
      以上ですが
    「引数を一つも指定しない場合は、argcの値は1となります。」
     ということなので、if ( argc < 2 ){ と結論付けました。
      汗汗

      補足日時:2015/06/24 03:34

A 回答 (3件)

Java や C# のように現代的な言語なら、


args にはプログラム引数のみが入るので
if ( args.length < 1 )
で問題ありません。

C 言語の場合は、args に「プログラム名」も含む仕様となっていますので、
argc は通常 1 以上の値になります。(用途によって例外あり)

参考)
JISX3010 プログラム言語 C
5.1.2.2.1 プログラム開始処理
argv[0] が指す文字列は、プログラム名を表す。
argv[1] から argv[argc-1] までが指す文字列は、プログラム仮引数を表す。

なので、"file mei ga nai" というよりも「プログラム引数が一個も無い」を表す条件は
if ( argc < 2 )
または
if ( argc == 1 )
でなければなりません
    • good
    • 0
この回答へのお礼

以下
ありがとうございました。
 
 Java や C# のように現代的な言語なら、
args にはプログラム引数のみが入るので
if ( args.length < 1 )
で問題ありません。

C 言語の場合は、args に「プログラム名」も含む仕様となっていますので、
argc は通常 1 以上の値になります。(用途によって例外あり)
 
 なるほどですね^^

お礼日時:2015/06/24 03:36

argc と argv[] については、詳しい解説をお読みいただくことをお勧めします。



さて、argv[] にはコマンドラインの引数が順次格納されますが、例えば、

test file1
というコマンドライン(test がコマンドで、 file1 が引数)の場合、
file1 は、argv[1] に格納されます。
で、argv[0] には、test というプログラムのファイルの名前(通常は、フルパスが多いと思います)が格納されます。

で、この場合、有効な引数は、argv[0] と argv[1] で、argc は、2 になります。

ファイルが指定されないとしても、argv[0] は必ず使われますので、argc は 1 以上になります。
    • good
    • 0
この回答へのお礼

以下了解です。 
  ありがとうございました。
ファイルが指定されないとしても、argv[0] は必ず使われますので、argc は 1 以上になります。

お礼日時:2015/06/24 03:37

質問の趣旨が分かりませんが、argc は 1以上の整数値を取りますので、if( argc < 1 ) は常に偽となります。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!