プロが教える店舗&オフィスのセキュリティ対策術

https://oshiete.goo.ne.jp/qa/8940272.html
以上プログラムで
 11行目から14行目までは「ストリームの生成」だそうです。
 fp = fopen(argv[1], "r");
if ( fp == NULL ){
printf("fopen dekinai\n");
return -2;
 以上で 
質問1
returnの-2;にしないとだめな理由は何でしょうか?
質問2
 もし、return-2;の-2 を他の数字にした場合、行数のカウントは可能でしょうか!?
 試したいのですが、簡単にできる環境がございません_ _
全国の皆様よろしくお願いいたします。

A 回答 (2件)

異常終了の原因を区別するためでしょう



大規模なシステムの場合だと、処理が複数のプログラムに分散されることが多いので、
スクリプトなりジョブ管理システムなりで、プログラムの呼び出しを管理することになります。
この様な場合はプログラム毎に実行結果を判断して、
異常発生ならば原因毎に特有の後始末を行わなければいけません。

この実行結果を判断する目的で、大抵のプログラムには終了ステータスの機能が備わっており、
C言語にも main 関数の return 文として仕様に盛り込まれています。

ご提示の例ですと、
終了ステータスが 0 なら、正常終了
終了ステータスが -1 なら、「引数が足りない」 の後始末をする
終了ステータスが -2 なら、「変なのを指定するな」 の後始末をする
というように、呼び出し側にて管理することができます。

単体で動くプログラムなら管理の必要はありませんが、
細かく決めた終了ステータスはデバッグ時に有益な情報源にもなりますので、
習慣として指定することをオススメします。

というわけで

質問1: -2 の理由
特に無いが、管理のために決まったルールがあるなら従うこと

質問2: -2 を他の数字にした場合
何の問題もない
    • good
    • 0
この回答へのお礼

ご回答誠にありがとうございました。
プログラムの”いろは”が少しわかりました。
めげずに頑張ります。
 今後ともよろしくお願いいたします。

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

> returnの-2;にしないとだめな理由は何でしょうか?


特にない。別の整数値でもかまわない。ただし、0 はプログラムが正常終了したと取られるからこの場合はだめだし、argc が 2 の場合とはプログラムが続けられない理由が違うからこのときの return の値とは別の値にしたほうがいい。

……というか、前に参考 URL にしたこのページちゃんと読みました?
http://www.geekpage.jp/programming/c/return-main …
あと、
> 試したいのですが、簡単にできる環境がございません_ _
って、前に GCC とか Visual C++ とかのインストール方法を聞いてたけど、それを使えばいいじゃないですか。それはどうなったんですか?
    • good
    • 1
この回答へのお礼

お返事が遅れまして申し訳ございませんでした。
 -2は特に決まりはない・・わかりました。
 以下で
CC とか Visual C++ とかのインストール方法を聞いてたけど、それを使えばいいじゃないですか。
 ですが、
 インストールはしていますが!いまいち使い方が分かりません?
 だいぶやりましたが_ _
 ユーチューブあたりで探してみます。

お礼日時:2015/03/24 20:44

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