ファイル処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tomo.xxx
記事: 13
登録日時: 12年前

ファイル処理

#1

投稿記事 by tomo.xxx » 12年前

こんばんは
夜分遅くに失礼します。

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!!"が表示されました。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: ファイル処理

#2

投稿記事 by h2so5 » 12年前

8行目が代入演算子ではなく比較演算子なのでfpに代入されていません。
Visual C++ではもとからfpがNULLになっていたのだと思います。

tomo.xxx
記事: 13
登録日時: 12年前

Re: ファイル処理

#3

投稿記事 by tomo.xxx » 12年前

h2so5さん
返信ありがとうございます。

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る