fopenの失敗処理までをセットにしたFileOpen関数を作ったのですが、fpに実引数として渡したポインタに代入が行われません。というか実引数として渡されていないような感もあります。私の考えだと、FILE構造体のポインタを引数として渡しているので、fopenの結果をfilenameのアドレスに直接代入して関数が終わる、といったイメージです。
必要なところだけ抜粋したのでおかしなところもあるかもしれません。よろしくお願いします。
環境はWindows xp
Visual C++ 2008 です。
以下ソースです。
#include <stdio.h> #include <stdlib.h> void FileOpen(FILE *fp , const char *filename,const char *mode); void main(void){ FILE *inputfile; int c; FileOpen(inputfile , "hoge.txt" , "r"); while((c = fgetc(inputfile)) != EOF){ printf("%c",c); } } //ファイルが開ければファイルポインタを返す(代入で) void FileOpen(FILE *fp , const char *filename,const char *mode){ if((fp = fopen(filename,mode)) == NULL){ //ファイルが開けるか printf("FILEが開けません。終了します。"); exit(EXIT_FAILURE); } }