ページ 11

ファイル処理

Posted: 2013年5月26日(日) 01:26
by tomo.xxx
こんばんは
夜分遅くに失礼します。

tomo.xxxです。

ファイル処理についてあれ?と思うことが出てきたので、ここに書かせていただきました。

とりあえずプログラム貼らせていただきます。

コード:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE *fp;

  fp == fopen("b.txt", "r");
  if(fp == NULL){
    printf("Error!!\n");
    exit(EXIT_FAILURE);
  }

  printf("seizyou\n");
  fclose(fp);

  return 0;
}
コンパイル、実行コマンド
gcc fopen.c
./a.exe
実行結果
seizyou

この処理をするときにあえて、"b.txt"を作業中のディレクトリに入れずに「Error!!」という表示を出そうとしたのですが、なぜか"b.txt"がないにも関わらず、"seizyou"が出てしまいました。

これは処理系によるものなのでしょうか?
それともfp == NULLはb.txtが無いことを意味しているのではなく、もっと他の意味を持っているのでしょうか?

ちなみに"seizyou"が出たのはcygwinでgccコンパイル、実行した場合です。
Visual C++では"Error!!"が表示されました。

Re: ファイル処理

Posted: 2013年5月26日(日) 01:38
by h2so5
8行目が代入演算子ではなく比較演算子なのでfpに代入されていません。
Visual C++ではもとからfpがNULLになっていたのだと思います。

Re: ファイル処理

Posted: 2013年5月26日(日) 01:50
by tomo.xxx
h2so5さん
返信ありがとうございます。

よく見れば単純なところを間違えていました。

ご指摘ありがとうございます^^