鴻池です。

"h.o" <gaster11@poplor.ocn.ne.jp> wrote in message
news:bj1dsh$cco$1@news-est.ocn.ad.jp...
> プログラム2(ファイル読み込み部)
> void file_read(void){
>
>  FILE *fp;
>
>  char buff[20];
>
>  line_no = 0; /* 行数カウンター(グローバル)初期化 */
>
>  if((fp = fopen(FILE_NAME,"r")) == NULL){
>   printf("ファイルが存在しません");
>   exit(1);/* ファイルが無ければプログラム終了 */
>   }
>
>  while(1){
>   if(fgets(buff,sizeof(buff)-1,fp) == NULL) break;
>
>   if( buff[0] == '\n' ) break;     ← 「問題の行」 A
>
>   if(line_no ==  MAX_DATA){
>    printf("%d 行に達しましたので読み込みを中止します \n",MAX_DATA);
>    break;
>    }
>
>   data[line_no] = atoi(buff); /* 文字列を整数に変換 */
>
>   line_no = line_no + 1; /* 行番号をインクリメント */
>
>   }
>
>   fclose(fp); /* オープンしたファイルを閉じる:必修 */
> }
>
> 問題点
>
> プログラム2で、Aの位置に
> if( buff[0] == '\n' ) break;
> という行を入れてありますが、この行を入ると、ファイルを読み込まずに終了して
> しまう場合がありました(ファイル末端で改行コードだけの行が来たら終了させる
> 目的のために入れたコードです。)
>
> 要するに、ファイルの先頭に改行コードが入っているという
> 事になるのですが、、、、プログラム1で作成したファイルを見ても
> ファイルの先頭に改行コードが来た形跡は無く ? という状態です。

プログラム1にしても,2でもよく分らないのですが,2について言えばやたら
breakが多くてなぜそんなに必要なのか理解し難い感じで゜す。で,疑問なのは,
「要するに、ファイルの先頭に改行コードが入っているという事になるのですが」と
いうのは,何を根拠にそう判断したのて゜しょうか。とりあえず,fgetsの仕様をよ
く読んでみると疑問も解決するように思いますが。(プログラムがどこで終了してい
るかdebagなりprintfなり挿入して確認すれば,分ると思いますが。)

-- 
******************************
   keizi kounoike
******************************