ここから本文です

fprintf(stderr,"Could not open file\n"); などについて

mot********さん

2013/5/1415:07:28

fprintf(stderr,"Could not open file\n"); などについて

in_file = fopen(name, "r");

if(in_file == NULL){
fprintf(stderr,"Could not open file\n");
exit(8);
}

このプログラムについてあのですが、
nameというファイルを開こうとし、
そのファイルが無かった場合は
Could not open file
と画面に出力する、という意味だと思うのですが、
なぜ
printf("Could not open file");
ではなく
fprintf(stderr,"Could not open file");
と書くのでしょうか?
stderrは一体何をしていて、なぜfprintfで
記述するのか教えてください。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
446
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

apr********さん

2013/5/1415:28:32

printf("Could not open file");

と書いていて,実行時に出力をリダイレクトして使った場合,
fopen で失敗しても,このメッセージが画面に表示されず,
役に立たない結果になるためです.stderrは,リダイレクト指定
にかかわらず,画面に出力します.すなわちstderrは,stdoutと
同様に画面出力を意味し,かつリダイレクトに左右されません.
これ以上の説明は奥深いことになり,手に負えませんので失礼!

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

k03********さん

2013/5/1415:18:16

mothix2さん

リダイレクトを検索する。
奥が深い。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる