fgetcの返却値 EOFについて
C言語について質問です。あまり詳しくないので言葉や、説明等間違っているところが
あり読みにくいと思います。
fgetc関数の返却値についてのお伺いします。
EOFはファイルの終わり又は、読み込みが失敗すると、返却されるとあります。
ここで、質問なのですが、2つの違いを判断することは可能でしょうか?
私が行った作業は
あるファイル内の文字を1文字づつ読み込んで。
文字の種類ごとに指定したbufferferに格納させたいと思っています。
しかし、ファイル内の終端がEOFで終る場合に読み込みエラーの場合と、読み込み終了で
場合分けができない為うまくできません。
#include <stdio.h>
#include <ctype.h>
char buffer[100];
char *filename="TestFile";
char* main(){
static FILE *fp = NULL;
char *p = buffer;
int c;
if ( fp == NULL ){
if ((fp = fopen( filename, "r" )) == NULL ){
fprintf(stderr,"can not open file %s\n", filename);
return ( (char *)NULL );
}
}
c = fgetc(fp);
while(1){
switch(c){
case '\n':
case '\0':
*p = '\0';
return( buffer);
/*以下のcase EOF の時に2通り考えられる*/
case EOF:/*読み込み終了*/
*p = '\0';
return( buffer);
/* case EOF:/*読み込みエラー
fprintf(stderr, " OPEN _ERROR %s\n", filename);
fclose(fp);
fp = NULL;
return ( (char *)NULL );
*/
default:
*p = (char)c;
p++;
}
c = fgetc(fp);
}
}
以上です。
このような場合どうしたらよいのでしょうか?また異なるやり方があればご教授お願いします。
よろしくお願いします。
お礼
ありがとうございます!感謝!^^